Dela via


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-Processreturnerar 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

Se även