So verwalten Sie Windows-Dienste mit PowerShell

Als Systemadministrator besteht eine der häufigsten Aufgaben darin, das Verwalten von Windows-Diensten zu erlernen, die eine wichtige …

Stück Windows Server und Clients.
Das Betriebssystem und viele Anwendungen hängen von diesen Diensten ab.
Über das bekannte Windows Services Microsoft Management Console-Fenster können Administratoren Dienste manipulieren auf lokalen oder Remote-Computern, aber nicht zu gut skalierbar, um Änderungen auf Dutzenden oder Hunderten von Computern gleichzeitig vorzunehmen.
Hier bietet sich PowerShell an.
PowerShell verfügt über einige native Cmdlets zum Verwalten von Windows-Diensten.
Get-Command * Service * -Modul Microsoft.PowerShell.Management

Cmdlets zum Verwalten von Windows-Diensten
Es gibt mehrere native Cmdlets, mit denen Administratoren Windows-Dienste verwalten können.

Diese Cmdlets führen viele verschiedene Aktionen für jeden gewünschten Dienst aus.
Get-Service ist am häufigsten Cmdlet. Im einfachsten Fall Get-Service Ohne Parameter werden alle Dienste auf dem lokalen Computer angezeigt. Die meisten Administratoren müssen jedoch Dienste auf Remotecomputern suchen. Dies kann mit dem erfolgen Computername Parameter.
Get-Service – Computername CLIENT1

Cmdlet Get-Service
Das Cmdlet Get-Service ohne Parameter zeigt die Dienste an, die auf einem lokalen Computer ausgeführt werden.

Verwenden von Get-Service detailliert alle Dienste, die auf dem Remote-Client vorhanden sind.

Umgang mit mehreren Maschinen

Was ist, wenn Sie die Dienste auf mehreren Computern anzeigen möchten? Vielleicht haben Sie eine Liste mit Computernamen – diese Liste kann auf verschiedene Arten erstellt werden: Active Directory, eine Branche, ein Client-Management-System, eine benutzerdefinierte Datenbank – in einer Textdatei. PowerShell hat ein Cmdlet namens Get-Content das kann jeden dieser Computernamen lesen; Mit einer foreach-Schleife können wir ausführen Get-Service für jeden dieser Computernamen.
Get-Content C: Computers.txt | foreach {Get-Service –ComputerName $ _}

Ändern des Computerdienstes mit PowerShell

Lassen Sie uns etwas tiefer gehen und einige der Dienste ändern. Es ist üblich, einen Dienst neu zu starten, wenn er sich schlecht verhält, oder eine Änderung vorzunehmen. Starten Sie beispielsweise den ALG-Dienst (Application Layer Gateway) auf allen Computern in dieser Textdatei neu. Durch Angabe eines bestimmten Dienstes, der gefunden werden soll, und Weiterleiten des Objekts an dieses Objekt Neustart-Service, Das ist kein Problem.
Get-Content C: Computers.txt | foreach {Get-Service –ComputerName $ _ -Name ALG | Neustart-Service}
Wenn der Dienst gestoppt wird, Neustart-Service wird es starten.

Das Cmdlet Set-Service steuert die Windows-Dienste weiter

Set-Service ist ein weiteres Cmdlet, das viele verschiedene Attribute in einem Windows-Dienst ändert, z. B. das Konfigurieren des Startmodus in einem Dienst. Hiermit kann festgelegt werden, ob der Dienst beim Start des Betriebssystems gestartet, manuell gestartet oder überhaupt nicht gestartet werden kann. Set-Service hat ein Starttyp Parameter zum Ändern dieses Attributs.
Mit den folgenden Befehlen wird der Starttyp für den ALG-Dienst auf allen Computern in der Datei C: Computers.txt deaktiviert.
Get-Content C: Computers.txt | foreach {Get-Service –ComputerName $ _ -Name ALG | Set-Service –StartupType deaktiviert}

Kombinieren Sie PowerShell und WMI für mehr Funktionalität

In einigen Fällen bieten die Standard-Service-Cmdlets entweder nicht genügend Informationen oder können ein bestimmtes Attribut nicht ändern. Für diese Fälle gibt es Windows Management Instrumentation (WMI). WMI hat eine Klasse namens Win32_Service, die mit aufgerufen werden kann Get-CimInstance oder Get-WmiObject.
Get-CimInstance –ComputerName client1 –ClassName Win32_Service

WMI Win32_Service
Wenn Sie die WMI Win32_Service-Klasse mit PowerShell verwenden, werden weitere Details zu Windows-Diensten auf einem Computer veröffentlicht.

Administratoren können mithilfe von viel mehr Informationen zu einem Dienst sammeln Eigentum Parameter mit einem Sternchen beim Abfragen des Dienstes über WMI.
Get-CimInstance –ComputerName CLIENT1 –ClassName Win32_Service –Property *

Eigenschaftsparameter in der Win32_Service-Klasse
Der Property-Parameter in der Win32_Service-Klasse kann detailliertere Informationen zu einem Windows-Dienst bereitstellen.

In die Details graben

Um einen erweiterten Überblick über die Funktionen der Standard-Service-Cmdlets zu erhalten, können Sie sich die Methoden für die WMI-Service-Instanzobjekte ansehen.
Get-WmiObject –ComputerName CLIENT1 –Class Win32_Service | Get-Member –MemberType-Methode

WMI-Dienstinstanzobjekte
Untersuchen der Methoden für die WMI-Dienstinstanzobjekte.

Diese Methoden können für die Serviceobjekte ausgeführt werden, indem sie aufgerufen werden.
Get-WmiObject –ComputerName CLIENT1 –Class Win32_Service –Filter “Name =” ALG “” | foreach {$ _. StopService ()}
Im obigen Beispiel verwende ich den Filter-Parameter, um nur den ALG-Dienst auszuwählen. Ich leite das an den Alias ​​weiter Für jedes Objekt und rufen die Dienst anhalten () Methode, die wiederum den Dienst stoppt. Auch wenn aufgrund der nicht notwendig Stop-Service-CmdletDies gibt einen Einblick in die Funktionsweise der Service-Cmdlets.

Similar Posts

Leave a Reply