Hantera tjänster
Det här exemplet gäller endast för Windows PowerShell 5.1.
Det finns åtta grundläggande service-cmdletar , utformade för en mängd olika tjänstuppgifter . Den här artikeln tittar bara på att lista och ändra körningstillstånd för tjänster. Du kan hämta en lista över tjänst-cmdletar med hjälp av Get-Command *-Service
. Du hittar information om varje cmdlet med hjälp Get-Help <Cmdlet-Name>
av , till exempel Get-Help New-Service
.
Hämta tjänster
Du kan hämta tjänsterna på en lokal dator eller fjärrdator med hjälp av cmdleten Get-Service
. Precis som med Get-Process
returnerar med kommandot Get-Service
utan parametrar alla tjänster. Du kan filtrera efter namn, även med hjälp av en asterisk som jokertecken:
PS> Get-Service -Name se*
Status Name DisplayName
------ ---- -----------
Running seclogon Secondary Logon
Running SENS System Event Notification
Stopped ServiceLayer ServiceLayer
Eftersom det inte alltid är uppenbart vad det verkliga namnet på tjänsten är, kanske du behöver hitta tjänster efter visningsnamn. Du kan söka efter specifikt namn, använda jokertecken eller ange en lista med visningsnamn:
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
Hämta fjärrtjänster
Med Windows PowerShell kan du använda parametern ComputerName för cmdleten Get-Service
för att hämta tjänsterna på fjärrdatorer. Parametern ComputerName accepterar flera värden och jokertecken, så att du kan hämta tjänsterna på flera datorer med ett enda kommando. Följande kommando hämtar till exempel tjänsterna på server01-fjärrdatorn.
Get-Service -ComputerName Server01
Från och med PowerShell 6.0 *-Service
har cmdletarna inte parametern ComputerName . Du kan fortfarande hämta tjänster på fjärrdatorer med PowerShell-fjärrkommunikation. Följande kommando hämtar till exempel tjänsterna på server02-fjärrdatorn.
Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }
Du kan också hantera tjänster med de andra *-Service
cmdletarna. Mer information om PowerShell-fjärrkommunikation finns i about_Remote.
Hämta nödvändiga och beroende tjänster
Get-Service-cmdleten har två parametrar som är mycket användbara i tjänstadministration. Parametern DependentServices hämtar tjänster som är beroende av tjänsten.
Parametern RequiredServices hämtar tjänster som LanmanWorkstation-tjänsten är beroende av.
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
Parametern DependentServices hämtar som kräver LanmanWorkstation-tjänsten.
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...
Följande kommando hämtar alla tjänster som har beroenden. Cmdleten Format-Table
för att visa egenskaperna Status, Namn, RequiredServices och DependentServices för tjänsterna.
Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
Format-Table -Property Status, Name, RequiredServices, DependentServices -auto
Stoppa, starta, pausa och starta om tjänster
Alla tjänst-cmdletar har samma allmänna formulär. Tjänster kan anges med eget namn eller visningsnamn och ta listor och jokertecken som värden. Om du vill stoppa utskriftshanteraren använder du:
Stop-Service -Name spooler
Om du vill starta utskriftshanteraren när den har stoppats använder du:
Start-Service -Name spooler
Om du vill pausa utskriftshanteraren använder du:
Suspend-Service -Name spooler
Cmdleten Restart-Service
fungerar på samma sätt som de andra service-cmdletarna:
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>
Observera att du får ett upprepat varningsmeddelande om att utskriftshanteraren startar. När du utför en tjänståtgärd som tar lite tid meddelar PowerShell att den fortfarande försöker utföra uppgiften.
Om du vill starta om flera tjänster kan du hämta en lista över tjänster, filtrera dem och sedan utföra omstarten:
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 : can't 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...
Dessa tjänst-cmdletar har ingen parameter för ComputerName , men du kan köra dem på en fjärrdator med hjälp av cmdleten Invoke-Command
. Följande kommando startar till exempel om Spooler-tjänsten på server01-fjärrdatorn.
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
Ange tjänstegenskaper
Cmdleten Set-Service
ändrar egenskaperna för en tjänst på en lokal dator eller fjärrdator. Eftersom tjänststatusen är en egenskap kan du använda den här cmdleten för att starta, stoppa och pausa en tjänst.
Set-Service-cmdleten har också en StartupType-parameter som gör att du kan ändra tjänstens starttyp.
Om du vill använda Set-Service
i Windows Vista och senare versioner av Windows öppnar du PowerShell med alternativet Kör som administratör .
Mer information finns i Set-Service