Restart a Service Remotely Using PowerShell on Multiple Servers

Wrzuciłem szybką funkcję PowerShell razem, która pozwoliłaby mi zrestartować jedną usługę na 1 lub więcej serwerach w jednym poleceniu. Nie znalazłem łatwego sposobu, aby to zrobić w PowerShell wcześniej, więc rzuciłem to razem. Składnia skryptu jest prosta:

Restart-MultipleServerServices -ServiceName MSExchangeTransport -ServerNames Server1,Server2

Nazwa usługi jest prostym ciągiem znaków i powinna być krótką nazwą usługi. Opcja ServerNames powinna być rozdzieloną przecinkami listą serwerów, na których usługa ma zostać uruchomiona ponownie. Może to być dowolna liczba serwerów, co oznacza, że możesz użyć tej opcji do zdalnego zatrzymania usługi na 1 serwerze lub na 100. Wynik ponownego uruchomienia usługi wygląda następująco:

Kopiuj poniższy skrypt:

function Restart-MultipleServerServices($ServiceName, $ServerNames)
{

foreach ($i in $ServerNames)
{
$service = Get-Service -ComputerName "$i" -name $ServiceName
 $service.stop()
 do { Start-sleep -Milliseconds 200}
 until ((Get-Service -ComputerName "$i" -Name $ServiceName).status -eq 'Stopped')
 Write-Host "Attempting to Stop Service $($ServiceName) on Server $i" -ForegroundColor Green
 Start-Sleep 10
 $service.start()
 do { Start-sleep -Milliseconds 200}
 until ((Get-Service -ComputerName "$i" -Name $ServiceName).status -eq 'Running')
 Write-Host "Attempting to Start Service $($ServiceName) on Server $i" -ForegroundColor Green

 }
 }

Włącz do swojego profilu PowerShell w poniższej ścieżce. Jeśli nie ma tam pliku PS1, możesz go utworzyć ręcznie:

 1: C:\Users\%USERNAME%\Documents\WindowsPowershell\Microsoft.PowerShell_profile.ps1

Zapisz i zamknij plik, a powinieneś być gotowy do pracy!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.