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