Requirement:
In an enterprise automation its very often a requirement to REMOTELY
- Query list of servers/computers/desktops
- Apply a registry change to the servers/computers/desktops
- Restart a Service on the servers/computers/desktops
Solution:
Implementing a PowerShell script for such an automation requirement helps you easily build enterprise capabilities to the script like:
- Showing a Progress bar indicating current activity of the script and how much percentage the processing is completed
- Implement safety check to avoid attempts connect to an inaccessible or offline servers/computers/desktops
- Display output to standard output channel
Examples:
PowerShell in PowerGUI:
Code:
$Servers = Get-Content "C:\Temp\Servers.txt" $TotalServersCount = ($Servers).Count $PerCentageCounter = 1 Foreach ($Server IN $Servers) { $PerCentCompleted = [System.Math]::Round(($PerCentageCounter/$TotalServersCount*100),0) Write-Progress -Activity "Processing Server [$PerCentageCounter] [$Server]" -CurrentOperation "Checking Connectivity to the Server" # Check Ping Connection to the Server if (! (Test-Connection -ComputerName $Server -Count 2 -ErrorAction SilentlyContinue -Quiet)) { Write-Warning "Ping check failed for $Server, Skipping Server" Write-Progress -Activity "Ping check failed for $Server, Skipping Server" -Status "$PerCentCompleted% Complete:" -PercentComplete $PerCentCompleted Start-Sleep -Seconds 5 $PerCentageCounter++ Continue } Write-Progress -Activity "Processing $Server Server" -CurrentOperation "Updating Registry Value" # Enable Remote Desktop Connection to the Server REG ADD "\\$Server\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f Start-Sleep -Seconds 2 Write-Progress -Activity "Processing $Server Server" -CurrentOperation "Restarting [Windows Update] Service" # Restart Windows Updates Service on the Remote Service Restart-Service -InputObject $(Get-Service -Computer $Server -Name wuauserv) Start-Sleep -Seconds 2 # Output the Status to Standard Output as well as Show Progressbar while processing the Servers. Write-Output "Restarted [Windows Update] Service on [$Server] Server" Write-Progress -Activity "Completed Processing $Server" -Status "$PerCentCompleted% Complete:" -PercentComplete $PerCentCompleted Start-Sleep -Seconds 5 $PerCentageCounter++ }
References:
Script File: