設計用於執行多種服務相關工作的核心服務 (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。
請參閱