Zarządzanie usługami

Ten przykład dotyczy tylko programu Windows PowerShell 5.1.

Istnieją osiem podstawowych poleceń cmdlet usługi zaprojektowanych dla szerokiej gamy zadań usługi . W tym artykule omówiono tylko wyświetlanie i zmienianie stanu działania dla usług. Listę poleceń cmdlet usługi można uzyskać przy użyciu polecenia Get-Command *-Service. Informacje o poszczególnych poleceniach cmdlet można znaleźć przy użyciu polecenia Get-Help <Cmdlet-Name>, na przykład Get-Help New-Service.

Pobieranie usług

Usługi można uzyskać na komputerze lokalnym lub zdalnym przy użyciu Get-Service polecenia cmdlet . Podobnie jak w przypadku Get-Processpolecenia , użycie Get-Service polecenia bez parametrów zwraca wszystkie usługi. Możesz filtrować według nazwy, nawet używając gwiazdki jako symbolu wieloznakowego:

PS> Get-Service -Name se*

Status   Name               DisplayName
------   ----               -----------
Running  seclogon           Secondary Logon
Running  SENS               System Event Notification
Stopped  ServiceLayer       ServiceLayer

Ponieważ nie zawsze jest oczywiste, jaka jest prawdziwa nazwa usługi, może być konieczne znalezienie usług według nazwy wyświetlanej. Możesz wyszukiwać według określonej nazwy, używać symboli wieloznacznych lub podać listę nazw wyświetlanych:

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

Uzyskiwanie usług zdalnych

Za pomocą programu Windows PowerShell można użyć parametru Get-Service ComputerName polecenia cmdlet, aby pobrać usługi na komputerach zdalnych. Parametr ComputerName akceptuje wiele wartości i symboli wieloznacznych, dzięki czemu można pobrać usługi na wielu komputerach za pomocą jednego polecenia. Na przykład następujące polecenie pobiera usługi na komputerze zdalnym Server01.

Get-Service -ComputerName Server01

Począwszy od programu PowerShell 6.0, *-Service polecenia cmdlet nie mają parametru ComputerName . Nadal można pobierać usługi na komputerach zdalnych za pomocą komunikacji zdalnej programu PowerShell. Na przykład następujące polecenie pobiera usługi na komputerze zdalnym Server02.

Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }

Możesz również zarządzać usługami za pomocą innych *-Service poleceń cmdlet. Aby uzyskać więcej informacji na temat komunikacji zdalnej programu PowerShell, zobacz about_Remote.

Uzyskiwanie wymaganych i zależnych usług

Polecenie cmdlet Get-Service ma dwa parametry, które są bardzo przydatne w administrowaniu usługą. Parametr DependServices pobiera usługi, które zależą od usługi.

Parametr RequiredServices pobiera usługi, na których zależy usługa LanmanWorkstation.

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

Parametr DependentServices pobiera, który wymaga usługi LanmanWorkstation.

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

Następujące polecenie pobiera wszystkie usługi, które mają zależności. Polecenie Format-Table cmdlet do wyświetlania właściwości Status, Name, RequiredServices i DependentServices usług.

Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
  Format-Table -Property Status, Name, RequiredServices, DependentServices -auto

Zatrzymywanie, uruchamianie, zawieszanie i ponowne uruchamianie usług

Wszystkie polecenia cmdlet usługi mają ten sam ogólny formularz. Usługi można określić według nazwy pospolitej lub nazwy wyświetlanej, a listy i symbole wieloznaczne jako wartości. Aby zatrzymać bufor wydruku, użyj:

Stop-Service -Name spooler

Aby uruchomić bufor wydruku po jego zatrzymaniu, użyj:

Start-Service -Name spooler

Aby zawiesić bufor wydruku, użyj:

Suspend-Service -Name spooler

Polecenie Restart-Service cmdlet działa w taki sam sposób jak inne polecenia cmdlet usługi:

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>

Zwróć uwagę, że zostanie wyświetlony powtarzany komunikat ostrzegawczy o uruchomieniu buforu wydruku. Gdy wykonujesz operację usługi, która zajmuje trochę czasu, program PowerShell powiadamia o tym, że nadal próbuje wykonać zadanie.

Jeśli chcesz ponownie uruchomić wiele usług, możesz uzyskać listę usług, odfiltrować je, a następnie wykonać ponowne uruchomienie:

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

Te polecenia cmdlet usługi nie mają parametru ComputerName , ale można je uruchomić na komputerze zdalnym za pomocą Invoke-Command polecenia cmdlet . Na przykład następujące polecenie uruchamia ponownie usługę buforowania na komputerze zdalnym Server01.

Invoke-Command -ComputerName Server01 {Restart-Service Spooler}

Ustawianie właściwości usługi

Polecenie Set-Service cmdlet zmienia właściwości usługi na komputerze lokalnym lub zdalnym. Ponieważ stan usługi jest właściwością, możesz użyć tego polecenia cmdlet, aby uruchomić, zatrzymać i wstrzymać usługę. Polecenie cmdlet Set-Service ma również parametr StartupType, który umożliwia zmianę typu uruchamiania usługi.

Aby użyć Set-Service w systemie Windows Vista i nowszych wersjach systemu Windows, otwórz program PowerShell z opcją Uruchom jako administrator .

Aby uzyskać więcej informacji, zobacz Set-Service

Zobacz też