Udostępnij za pomocą


Zarządzanie usługami

Ten przykład dotyczy tylko programu Windows PowerShell 5.1.

Istnieje osiem podstawowych poleceń cmdlet Service, które są przeznaczone do szerokiego zakresu zadań związanych z usługą. 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 Get-Command *-Service. Informacje o poszczególnych poleceniach cmdlet można znaleźć przy użyciu 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 polecenia cmdlet Get-Service. Podobnie jak w przypadku Get-Process, użycie polecenia Get-Service 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 ComputerName polecenia cmdlet Get-Service, aby uzyskać 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, użycie następującej komendy pobiera usługi na zdalnym komputerze Server01.

Get-Service -ComputerName Server01

Począwszy od programu PowerShell 6.0, polecenia cmdlet *-Service nie mają parametru ComputerName. Nadal można uzyskiwać dostęp do usług na komputerach zdalnych za pomocą zdalnego zarządzania PowerShell. Na przykład następujące polecenie wyświetla usługi na zdalnym komputerze Server02.

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

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

Uzyskiwanie wymaganych usług i usług zależnych

Polecenie cmdlet Get-Service ma dwa parametry, które są bardzo przydatne w administrowaniu usługą. Parametr DependentServices 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 usługi, które wymagają 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 wyświetla wszystkie usługi, które mają zależności. Polecenie cmdlet Format-Table wyświetla właściwości usług, takie jak stan, nazwa, wymagane usługioraz usługi zależne.

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ą tę samą ogólną postać. Usługi można określić według nazwy ogólnej lub nazwy wyświetlanej i mogą przyjmować listy oraz symbole wieloznaczne jako wartości. Aby zatrzymać bufor wydruku, użyj:

Stop-Service -Name spooler

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

Start-Service -Name spooler

Aby zawiesić bufor wydruku, użyj:

Suspend-Service -Name spooler

Cmdlet Restart-Service działa w taki sam sposób jak inne cmdlety Service:

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 cmdlety usługi nie mają parametru ComputerName, ale można je uruchomić na komputerze zdalnym przy użyciu polecenia cmdlet Invoke-Command. 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 cmdlet Set-Service 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ż