Dienste remote via Powershell starten

Powershell ist ein wunderbares Werkzeug, mit dem man ganz viele Dinge erledigen kann.
Aber haben Sie es schon einmal geschafft, einen Dienst auf einem anderen Server/Computer zu starten oder zu stoppen?
Da gibt es nämlich ein kleines Hindernis – wir zeigen Ihnen, wie Sie dies kinderleicht bewältigen können!

Schauen wir uns zuerst einmal das Problem an. Welche Powershell CMDlets stehen uns für *-Service zur Verfügung?

  • Get-Service
  • Set-Service
  • Start-Service
  • Stop-Service

Fangen wir mit Get-Service und einer lokalen Abfrage an:

Get-Service -Name W32Time

Gehen wir einen Schritt weiter und starten die gleiche Abfrage für einen anderen Computer (Bsp: „pc01“). Hierzu nutzen wir den Parameter „-ComputerName

Get-Service -Name W32Time -ComputerName pc01

Jetzt sollte man denken, man nutzt einfach das CMDlet Start- bzw. Stop-Service und hängt den Parameter -ComputerName an, um Dienste zu starten/stoppen. Das Problem ist: den Parameter -ComputerName gibt es bei diesen CMDlets nicht!

Jetzt kommt einem die Idee, man könnte doch ein Get-Service in ein Start-Service zu pipen. Die Idee ist gut, nur leider greift er beim CMDlet Start-Service wieder auf den lokalen Computer zu, nicht auf den Remote Computer.

Lösung:

Das CMDlet Set-Service kann auch zum Starten & Stoppen von Diensten verwendet werden, es unterstützt den Parameter „-ComputerName“ und zum Starten & Stoppen können wir den Parameter „-Status“ verwenden.

Set-Service -Name W32Time -ComputerName pc01 -Status Running

Der Parameter „-Status“ kennt übrigens folgende Modi:

  • Running
  • Stopped
  • Paused

Eine recht simple, allerdings eher unbekannte Lösung.

Viel Spaß damit!