Mithilfe der acht zentralen Dienst-Cmdlets kann eine Vielzahl von Dienstaufgaben erledigt werden. Nachfolgend werden nur das Aufführen und Ändern des Ausführungsstatus für Dienste behandelt. Sie können jedoch mit Get-Help *-Service eine Liste der Dienst-Cmdlets anzeigen. Informationen über die einzelnen Dienst-Cmdlets erhalten Sie mit Get-Help <Name des Cmdlets>, z. B. Get-Help New-Service.

Abrufen von Diensten

Die Dienste auf einem lokalen oder Remotecomputer können Sie mit dem Cmdlet Get-Service abrufen. Wie bei Get-Process gibt der Befehl Get-Service ohne Parameter alle Dienste zurück. Sie können anhand des Namens filtern und sogar ein Sternchen als Platzhalter verwenden:

PS> Get-Service -Name se*
Status   Name               DisplayName
------   ----               -----------
Running  seclogon           Secondary Logon
Running  SENS               System Event Notification
Stopped  ServiceLayer       ServiceLayer

Da der tatsächliche Name für einen Dienst nicht immer offensichtlich ist, müssen Sie Dienste möglicherweise anhand des Anzeigenamens suchen. Sie können dazu den spezifischen Namen, Platzhalter oder eine Liste mit Anzeigenamen verwenden:

PS> Get-Service -DisplayName se*
Status   Name               DisplayName
------   ----               -----------
Running  lanmanserver       Server
Running  SamSs              Security Accounts Manager
Running  seclogon           Secondary Logon
Stopped  ServiceLayer       ServiceLayer
Running  wscsvc             Security Center
PS> Get-Service -DisplayName ServiceLayer,Server
Status   Name               DisplayName
------   ----               -----------
Running  lanmanserver       Server
Stopped  ServiceLayer       ServiceLayer

Mit dem ComputerName-Parameter des Cmdlet "Get-Service" können Sie die Dienste auf Remotecomputern abrufen. Der ComputerName-Parameter akzeptiert mehrere Werte und Platzhalterzeichen, deshalb können Sie die Dienste auf mehreren Computern mit einem einzelnen Befehl abrufen. Mit dem folgenden Befehl können Sie beispielsweise die Dienste auf dem Remotecomputer "Server01" abrufen:

Get-Service -ComputerName Server01

Abrufen von erforderlichen und abhängigen Diensten

Das Cmdlet "Get-Service" verfügt über zwei Parameter, die sich gut für die Diensteverwaltung eignen. Mit dem DependentServices-Parameter rufen Sie Dienste ab, die vom Dienst abhängen. Mit dem RequiredServices-Parameter werden Dienste abgerufen, von denen dieser Dienst abhängig ist.

Mit diesen Parametern werden nur die Werte der DependentServices-Eigenschaft und der ServicesDependedOn-Eigenschaft (alias=RequiredServices) für das von Get-Service zurückgegebene System.ServiceProcess.ServiceController-Objekt angezeigt, jedoch werden die Befehle und das Abrufen dieser Informationen dabei vereinfacht.

Mit dem folgenden Befehl werden die für den LanManWorkstation-Dienst erforderlichen Dienste abgerufen.

PS> Get-Service -Name LanmanWorkstation -RequiredServices
Status   Name               DisplayName
------   ----               -----------
Running  MRxSmb20           SMB 2.0 MiniRedirector
Running  bowser             Bowser
Running  MRxSmb10           SMB 1.x MiniRedirector
Running  NSI                Network Store Interface Service

Mit dem folgenden Befehl werden die Dienste abgerufen, für die der LanManWorkstation-Dienst erforderlich ist.

PS> Get-Service -Name LanmanWorkstation -DependentServices
Status   Name               DisplayName
------   ----               -----------
Running  SessionEnv         Terminal Services Configuration
Running  Netlogon           Netlogon
Stopped  Browser            Computer Browser
Running  BITS               Background Intelligent Transfer Ser...

Sie können sogar alle Dienste mit Abhängigkeiten abrufen. Verwenden Sie dazu den folgenden Befehl, der anschließend mit dem Cmdlet "Format-Table" die Eigenschaften Status, Name, RequiredServices und DependentServices der Dienste auf dem Computer anzeigt.

Get-Service -Name * | where {$_.RequiredServices -or $_.DependentServices} | Format-Table -Property Status, Name, RequiredServices, DependentServices -auto

Beenden, Starten, Anhalten und Neustarten von Diensten

Die Dienst-Cmdlets, die jeweils die gleiche allgemeine Form aufweisen. Dienste können durch den allgemeinen Namen oder den Anzeigenamen angegeben werden und akzeptieren Listen und Platzhalter als Werte. Geben Sie Folgendes ein, um den Druckerspooler zu beenden:

Stop-Service -Name spooler

Geben Sie Folgendes ein, um den beendeten Druckerspooler neu zu starten:

Start-Service -Name spooler

Geben Sie Folgendes ein, um den Druckerspooler anzuhalten:

Suspend-Service -Name spooler

Das Cmdlet Restart-Service wird auf die gleiche Weise wie andere Dienst-Cmdlets verwendet. Im Folgenden finden Sie einige komplexere Verwendungsbeispiele. Die einfachste Verwendung besteht in der Angabe des Dienstnamens:

PS> Restart-Service -Name spooler
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
PS>

Daraufhin erhalten Sie wiederholt Warnmeldungen über das Starten des Druckerspoolers. Wenn Sie einen Dienstvorgang ausführen, der einige Zeit in Anspruch nimmt, werden Sie von Windows PowerShell benachrichtigt, dass die Ausführung des Vorgangs weiterhin versucht wird.

Wenn Sie mehrere Dienste neu starten möchten, können Sie eine Liste der Dienste anzeigen, filtern und anschließend den Neustart durchführen:

PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
Restart-Service : Cannot stop service 'Logical Disk Manager (dmserver)' because
 it has dependent services. It can only be stopped if the Force flag is set.
At line:1 char:57
+ Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<<
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...

Diese Dienst-Cmdlets verfügen über keinen ComputerName-Parameter, Sie können sie jedoch auf einem Remotecomputer mit dem Cmdlet "Invoke-Command" ausführen. Mit dem folgenden Befehl wird z. B. der Spoolerdienst auf dem Remotecomputer "Server01" erneut gestartet.

Invoke-Command -ComputerName Server01 {Restart-Service Spooler}

Festlegen von Diensteigenschaften

Mit dem Cmdlet "Set-Service" ändern Sie die Eigenschaften eines Diensts auf einem lokalen Computer oder Remotecomputer. Da der Dienststatus eine Eigenschaft bildet, können Sie mit diesem Cmdlet einen Dienst starten, beenden oder unterbrechen. Das Cmdlet "Set-Service" verfügt zudem über den StartupType-Parameter, mit dem Sie den Dienststarttyp ändern können.

Wenn Sie "Set-Service" unter Windows Vista und höheren Versionen von Windows verwenden möchten, öffnen Sie Windows PowerShell mit der Option "Als Administrator ausführen".

Weitere Informationen finden Sie unter Set-Service.

Siehe auch




Inhaltsverzeichnis