設計用於執行多種服務相關工作的核心服務 (Service) cmdlet 有八個。以下只介紹列舉及變更服務執行狀態,但您可以使用 Get-Help *-Service 取得服務 Cmdlet 的清單,也可以使用 Get-Help <Cmdlet 名稱> (類似 Get-Help New-Service) 找到每個服務 Cmdlet 的相關資訊。

取得服務

Get-Service Cmdlet 可用來取得本機或遠端電腦上的服務。和 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

您可以使用 Get-Service Cmdlet 的 ComputerName 參數取得遠端電腦上的服務。ComputerName 可參數接受多個值和萬用字元,所以您可以藉由單一命令,就取得多部電腦的服務。例如,下列命令會取得 Server01 遠端電腦上的服務。

Get-Service -ComputerName Server01

取得必要和依存的服務

Get-Service Cmdlet 具有兩個參數,對於服務管理非常有用。DependentServices 參數會取得依存於某服務的服務。RequiredServices 參數會取得此服務所相依的服務。

這些參數只會顯示 Get-Service 所傳回的 System.ServiceProcess.ServiceController 物件的 DependentServices 和 ServicesDependedOn (別名=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

下列命令會取得需要 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 Cmdlet 來顯示電腦上服務的 Status、Name、RequiredServices 和 DependentServices 屬性。

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

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

所有的服務 Cmdlet 都具有相同的通用格式。您可指定服務的一般名稱或顯示名稱,且名稱值接受清單和萬用字元。若要停止列印緩衝多工處理器,請使用:

Stop-Service -Name spooler

停止列印多工緩衝處理器之後若要再次啟動,請使用:

Start-Service -Name spooler

若要暫停列印多工緩衝處理器,請使用:

Suspend-Service -Name spooler

Restart-Service Cmdlet 的用法和其他的服務 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>

如您所見,畫面上重複出現列印多工緩衝處理器正在啟動的警告訊息。如果您所執行的服務操作需要花費一些時間,Windows 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 : Cannot 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 參數,但您可以使用 Invoke-Command Cmdlet 在遠端電腦上執行這些命令。例如,下列命令會在 Server01 遠端電腦上重新啟動多工緩衝處理器服務:

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

設定服務屬性

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

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

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

請參閱




目錄