為了方便管理服務,Windows PowerShell 提供高達 8 個 cmdlet,此次謹說明如何取得服務執行的狀態。
使用 Get-Service cmdlet 可取得本機或遠端電腦上的服務狀態,就跟上一篇討論的<a href="">「使用 Windows PowerShell 管理處理序」</a>一樣,不加參數的 Get-Service 會顯示所有的服務。而且只會在目前使用者具有查看服務權限的時候,才會顯示這些服務。如果 Get-Service 沒有顯示服務,就表示您沒有檢視這些服務的權限:
Get-Service | Out-Host -Paging
由上圖執行結果中的 Name 欄位來看,並不是那麼容易可以辨別出該服務的顯示名稱為何,所以透過 DisplayName 屬性,搭配完整的顯示名稱、萬用字元或部分的顯示名稱,以便依照顯示名稱進行篩選。
以下面的程式碼來說,會找出顯示名稱為 Win 帶頭、顯示名稱為 Server、與顯示名稱有 Service 的服務,並且以表格方式自動調整最佳的欄位寬度以便顯示其結果:
Get-Service -DisplayName Win*, Server, *Service* | Format-Table -AutoSize
有時候管理者會想知道某個服務其必要和依存的服務有哪些,就可使用 DependentServices 參數取得依存於某服務,而 RequiredServices 參數則會取得與此服務相依的服務。例如下面的程式碼會依序顯示 Workstation 服務所需的服務,以及需要 Workstation 服務的服務:
# 設定變數
$ws = "Workstation"
# 顯示所需的服務
Write-Output "$ws 所需的服務"
Write-Output "======================"
Get-Service -Name Workstation -RequiredServices
# 顯示依存的服務
Write-Output `n "依存 $ws 的服務"
Write-Output "======================"
# 因為 Name 參數是預設的屬性,所以可以省略掉 Name 參數
Get-Service Workstation -DependentServices
進一步結合上面的程式碼,可以找出所有彼此具有相依性,且正在執行中的服務,再搭配 Format-Table 來顯示電腦上服務的 Status、Name、RequiredServices 和 DependentServices 屬性:
Get-Service * | Where {$_.RequiredServices -or $_.DependentServices} | Where {$_.Status -eq "Running"} | Format-Table Status, Name, RequiredServices, DependentServices -AutoSize | Out-Host -Paging