共用方式為


管理服務

此範例僅適用於 Windows PowerShell 5.1。

有八個核心 服務 Cmdlet,專為各種服務工作所設計。 本文只會查看服務的清單和變更執行中狀態。 您可以使用 取得服務 Cmdlet Get-Command *-Service清單。 您可以使用 尋找每個 Cmdlet Get-Help <Cmdlet-Name>的相關資訊, 例如 Get-Help New-Service

取得服務

您可以使用 Cmdlet 在本機或遠端電腦上 Get-Service 取得服務。 如同 , Get-Process使用不含參數的 Get-Service 命令會傳回所有服務。 您可以依名稱進行篩選,即使使用星號作為通配符:

PS> Get-Service -Name se*

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

因為服務的實際名稱不一定很明顯,所以您可能會發現您需要依顯示名稱尋找服務。 您可以依特定名稱搜尋、使用通配符,或提供顯示名稱清單:

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

取得遠端服務

使用 Windows PowerShell,您可以使用 Cmdlet 的 Get-Service ComputerName 參數來取得遠端電腦上的服務。 ComputerName 參數接受多個值和通配符,因此您可以使用單一命令取得多部計算機上的服務。 例如,下列命令會取得 Server01 遠端電腦上的服務。

Get-Service -ComputerName Server01

從 PowerShell 6.0 開始, *-Service Cmdlet 沒有 ComputerName 參數。 您仍然可以使用 PowerShell 遠端功能在遠端電腦上取得服務。 例如,下列命令會取得 Server02 遠端電腦上的服務。

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

您也可以使用其他 *-Service Cmdlet 來管理服務。 如需PowerShell遠端的詳細資訊,請參閱 about_Remote

取得必要和相依服務

Get-Service Cmdlet 有兩個參數,在服務管理方面非常有用。 DependentServices 參數會取得相依於服務的服務。

RequiredServices 參數會取得 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

DependentServices 參數會取得需要 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...

下列命令會取得具有相依性的所有服務。 顯示Format-Table服務之 StatusNameRequiredServicesDependentServices 屬性的 Cmdlet

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

停止、啟動、暫停和重新啟動服務

服務 Cmdlet 都有相同的一般形式。 服務可以透過一般名稱或顯示名稱來指定,並以清單和通配符作為值。 若要停止列印多任務緩衝處理程式,請使用:

Stop-Service -Name spooler

若要在列印後台處理程式停止之後啟動列印後台處理程式,請使用:

Start-Service -Name spooler

若要暫停列印多任務緩衝處理程式,請使用:

Suspend-Service -Name spooler

Cmdlet Restart-Service 的運作方式與其他 Service Cmdlet 相同:

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>

請注意,您會收到有關列印後台處理程式啟動的重複警告訊息。 當您執行需要一些時間的服務作業時,PowerShell 會通知您它仍在嘗試執行工作。

如果您要重新啟動多個服務,您可以取得服務清單、篩選服務,然後執行重新啟動:

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

這些服務 Cmdlet 沒有 ComputerName 參數,但您可以使用 Cmdlet 在遠端電腦上 Invoke-Command 執行它們。 例如,下列命令會重新啟動 Server01 遠端電腦上的 Spooler 服務。

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

設定服務屬性

Cmdlet 會 Set-Service 變更本機或遠端電腦上的服務屬性。 因為服務狀態是屬性,因此您可以使用此 Cmdlet 來啟動、停止和暫停服務。 Set-Service Cmdlet 也有 StartupType 參數,可讓您變更服務啟動類型。

若要在 Set-Service Windows Vista 和更新版本的 Windows 上使用,請使用 [ 以系統管理員 身分執行] 選項開啟 PowerShell。

如需詳細資訊,請參閱 Set-Service

另請參閱