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-Process
polecenia , 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