Sie können Windows-Dienste nicht nur über das Snap-In services.msc oder das Befehlszeilentool sc.exe verwalten, sondern auch mit PowerShell. In diesem Artikel werden wir verschiedene Szenarien für die Verwaltung von Windows-Diensten mit PowerShell betrachten.
PowerShell-Cmdlets zur Verwaltung von Windows-Diensten
Es gibt acht grundlegende Dienst-Cmdlets, um den Status von Windows-Diensten anzuzeigen und sie zu verwalten. Um die vollständige Liste der Dienstverwaltungs-Cmdlets zu erhalten, führen Sie diesen Befehl aus:
Get-Help \*-Service
- Get-Service – ermöglicht das Abrufen der Dienste auf einem lokalen oder Remotecomputer im laufenden oder gestoppten Zustand;
- New-Service – erstellt einen Dienst. Das Cmdlet erstellt einen neuen Eintrag für einen Windows-Dienst in der Registrierung und in der Dienstdatenbank;
- Restart-Service – startet einen Dienst neu. Das Cmdlet sendet die Neustartnachricht über den Windows Service Controller;
- Resume-Service – setzt einen Dienst fort. Das Cmdlet sendet eine Fortsetzungsnachricht an den Windows-Dienstmanager;
- Set-Service – ändert die Einstellungen eines lokalen oder Remote-Dienstes, einschließlich seines Status, seiner Beschreibung, seines angezeigten Namens oder seines Startmodus. Sie können dieses Cmdlet auch verwenden, um einen Dienst zu starten, anzuhalten oder anzuhalten;
- Start-Service – startet einen Dienst;
- Stop-Service – hält einen Dienst an (das Cmdlet sendet eine Anhaltemeldung an den Windows Service Manager);
- Suspend-Service – hält einen Dienst an. Ein angehaltener Dienst wird weiterhin ausgeführt, tut aber nichts, bis er (z. B. mit dem Cmdlet „Resume-Service“) wieder aufgenommen wird.
Eine ausführliche Beschreibung und Beispiele für die Verwendung eines bestimmten Cmdlets finden Sie in der Get-Help:
Get-Help Start-Service
Wie prüft man den Windows-Dienststatus mit Get-Service?
Mit dem Cmdlet „Get-Service“ können Sie die Liste der Dienste und deren Status (ausgeführt/gestoppt) auf einem lokalen oder Remotecomputer abrufen. Mit dem Parameter -Name können Sie Dienste nach Namen auswählen. Der Dienstname kann mit dem Platzhalterzeichen *
angegeben werden.
Wenn Sie den genauen Dienstnamen nicht kennen, können Sie ihn mit dem Parameter -DisplayName anhand des angezeigten Namens suchen. Sie können die Liste der Werte und Platzhalter verwenden.
Verwenden Sie das Cmdlet „Get-Service“ mit dem Parameter -ComputerName, um den Dienststatus auf einem Remotecomputer abzurufen. Sie können den Dienststatus auf mehreren Remotecomputern gleichzeitig abfragen, indem Sie deren Namen durch Kommata getrennt angeben. Der unten gezeigte Befehl ruft beispielsweise den Spooler-Dienststatus auf den Remotecomputern ny-prnt1 und ny-prnt2 ab.
Get-Service spooler –ComputerName ny-prnt1,ny-prnt2
Status Name DisplayName------ ---- -----------Running spooler Print SpoolerStopped spooler Print Spooler
Um alle Eigenschaften eines Dienstes anzuzeigen, verwenden Sie das Cmdlet „Select-Object“:
Get-Service spooler | Select-Object *
Mit dem Cmdlet „Select-Object“ können Sie bestimmte Eigenschaften eines Dienstes abrufen. Sie möchten beispielsweise den Namen, den Status und die verfügbaren Optionen des Spooler-Dienstes anzeigen:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
Das Cmdlet „Get-Service“ hat zwei Parameter, mit denen Sie die Dienstabhängigkeiten anzeigen können:
- -DependentServices ermöglicht die Anzeige der vom angegebenen Dienst abhängigen Dienste
- -RequiredServices zeigt die Dienste an, von denen der angegebene Dienst abhängt
Der folgende Befehl zeigt die zum Starten des Spooler-Dienstes erforderlichen Dienste an:
Get-Service –Name Spooler -RequiredServices
Der folgende Befehl zeigt die Dienste an, die von Spooler abhängen:
Get-Service –Name Spooler -DependentServices