U kunt Windows-services niet alleen beheren vanuit de services.msc snap-in of de sc.exe opdrachtregeltool, maar ook met PowerShell. In dit artikel bespreken we verschillende scenario’s voor het beheren van Windows-services met PowerShell.
PowerShell Cmdlets voor het beheren van Windows-services
Er zijn acht basis Service cmdlets om de status van Windows-services te bekijken en deze te beheren. Voer de volgende opdracht uit om de volledige lijst met cmdlets voor servicebeheer te krijgen:
Get-Help \*-Service
- Get-Service – hiermee kunt u de services op een lokale of externe computer ophalen, zowel in de status “actief” als “gestopt”;
- New-Service – hiermee maakt u een service aan. Het cmdlet maakt een nieuwe entry voor een Windows service in het register en in de service database;
- Restart-Service – herstart een service. Het cmdlet verstuurt een herstart bericht via de Windows Service Controller;
- Resume-Service – hervat een service. Het cmdlet stuurt een hervattingsbericht naar Windows Service Manager;
- Set-Service – wijzigt de instellingen van een lokale of remote service, inclusief de status, beschrijving, weergegeven naam of opstart mode. U kunt dit cmdlet ook gebruiken om een service te starten, te stoppen of op te schorten;
- Start-Service – start een service;
- Stop-Service – stopt een service (het cmdlet stuurt een stop-bericht naar Windows Service Manager);
- Suspend-Service – schort een service op. Een onderbroken service draait nog steeds, maar doet niets totdat deze wordt hervat met behulp van (bijvoorbeeld, het Resume-Service cmdlet).
U kunt een gedetailleerde beschrijving en voorbeelden van het gebruik van een bepaald cmdlet krijgen met Get-Help:
Get-Help Start-Service
Hoe de status van Windows services te controleren met Get-Service?
U kunt de lijst met services en hun status (actief/gestopt) opvragen op een lokale of externe computer met het cmdlet Get-Service. De parameter -Name maakt het mogelijk om services op naam te selecteren. De naam van de service kan worden opgegeven met het jokerteken *
.
Als je de exacte naam van de service niet weet, kun je deze vinden aan de hand van de weergegeven naam met de -DisplayName parameter. U kunt de lijst met waarden en jokertekens gebruiken.
Gebruik het cmdlet Get-Service met de parameter -ComputerName om de status van de service op een externe computer op te vragen. U kunt de status van de service op meerdere computers op afstand tegelijk opvragen door hun namen op te geven, gescheiden door komma’s. De onderstaande opdracht geeft bijvoorbeeld de status van de Spooler-service op de externe computers ny-prnt1 en ny-prnt2.
Get-Service spooler –ComputerName ny-prnt1,ny-prnt2
Status Name DisplayName------ ---- -----------Running spooler Print SpoolerStopped spooler Print Spooler
Om alle eigenschappen van een service weer te geven, gebruikt u het cmdlet Select-Object:
Get-Service spooler | Select-Object *
Het cmdlet Select-Object maakt het mogelijk specifieke eigenschappen van een service op te vragen. U wilt bijvoorbeeld de naam, status en beschikbare opties van de Spooler-service bekijken:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
Het cmdlet Get-Service heeft twee parameters waarmee u de afhankelijkheden van de service kunt bekijken:
- -DependentServices maakt het mogelijk om de services weer te geven die afhankelijk zijn van de gegeven service
- -RequiredServices geeft de services weer waarvan de gegeven service afhankelijk is
Het volgende commando geeft de services weer die nodig zijn om de Spooler service te starten:
Get-Service –Name Spooler -RequiredServices
De volgende opdracht geeft de services weer die afhankelijk zijn van Spooler:
Get-Service –Name Spooler -DependentServices