Get-Service

取得本機或遠端電腦上的服務。

Syntax

Get-Service
   [[-Name] <String[]>]
   [-ComputerName <String[]>]
   [-DependentServices]
   [-RequiredServices]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [<CommonParameters>]
Get-Service
   [-ComputerName <String[]>]
   [-DependentServices]
   [-RequiredServices]
   -DisplayName <String[]>
   [-Include <String[]>]
   [-Exclude <String[]>]
   [<CommonParameters>]
Get-Service
   [-ComputerName <String[]>]
   [-DependentServices]
   [-RequiredServices]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-InputObject <ServiceController[]>]
   [<CommonParameters>]

Description

Cmdlet 會 Get-Service 取得對象,這些物件代表本機電腦或遠端電腦上的服務,包括執行和停止的服務。 根據預設,當 Get-Service 執行時沒有參數,則會傳回所有本機計算機的服務。

您可以指定服務名稱或服務的顯示名稱,或透過管線將服務對象傳送至此 Cmdlet,來指示此 Cmdlet 只取得特定服務。

範例

範例 1:取得計算機上的所有服務

這個範例會取得計算機上的所有服務。 其行為就像您輸入 一 Get-Service *樣。 默認顯示會顯示每個服務的狀態、服務名稱和顯示名稱。

Get-Service

範例 2:取得以搜尋字串開頭的服務

此範例會擷取開頭為 (Windows Management Instrumentation) 的服務名稱 WMI

Get-Service "wmi*"

範例 3:顯示包含搜尋字串的服務

本範例會以包含 文字 network的顯示名稱來顯示服務。 即使服務名稱不包含 Net,例如 xmlprov、網路布建服務,搜尋顯示名稱也會尋找網路相關服務。

Get-Service -Displayname "*network*"

範例 4:取得以搜尋字串和排除項目開頭的服務

此範例只會取得開頭為 的服務名稱 win,但 WinRM 服務除外。

Get-Service -Name "win*" -Exclude "WinRM"

範例 5:顯示目前使用中的服務

此範例只會顯示狀態為 Running的服務。

Get-Service | Where-Object {$_.Status -eq "Running"}

Get-Service 會取得計算機上的所有服務,並將對象傳送至管線。 Cmdlet Where-Object 只會選取狀態屬性等於Running的服務。

Status 只是服務物件的一個屬性。 若要檢視所有屬性,請輸入 Get-Service | Get-Member

範例 6:取得遠端電腦上的服務

Get-Service -ComputerName "Server02"

此命令會取得 Server02 遠端電腦上的服務。

因為的 Get-Service ComputerName 參數不會使用 Windows PowerShell 遠端處理,因此即使電腦未設定為在 Windows PowerShell 中遠端處理,您也可以使用此參數。

範例 7:列出本機計算機上具有相依服務的服務

此範例會取得具有相依服務的服務。

Get-Service |
  Where-Object {$_.DependentServices} |
    Format-List -Property Name, DependentServices, @{
      Label="NoOfDependentServices"; Expression={$_.dependentservices.count}
    }

Name                  : AudioEndpointBuilder
DependentServices     : {AudioSrv}
NoOfDependentServices : 1

Name                  : Dhcp
DependentServices     : {WinHttpAutoProxySvc}
NoOfDependentServices : 1
...

Cmdlet 會 Get-Service 取得計算機上的所有服務,並將對象傳送至管線。 Cmdlet 會Where-Object選取 DependentServices 屬性不是 Null 的服務

結果會從管線向下傳送至 Format-List Cmdlet。 Property 參數會顯示服務的名稱、相依服務的名稱,以及顯示每個服務的相依服務數目的導出屬性。

範例 8:依屬性值排序服務

此範例顯示,當您依其 Status 屬性的值以遞增順序排序服務時,停止的服務會出現在執行服務之前。 這是因為 Status 的值是列舉,其中 Stopped 具有的值1,且 Running 值為 4。 如需詳細資訊,請參閱 ServiceControllerStatus

若要先列出執行中的服務,請使用 Cmdlet 的 Sort-Object Descending 參數。

Get-Service "s*" | Sort-Object status

Status   Name               DisplayName
------   ----               -----------
Stopped  stisvc             Windows Image Acquisition (WIA)
Stopped  SwPrv              MS Software Shadow Copy Provider
Stopped  SysmonLog          Performance Logs and Alerts
Running  Spooler            Print Spooler
Running  srservice          System Restore Service
Running  SSDPSRV            SSDP Discovery Service
Running  ShellHWDetection   Shell Hardware Detection
Running  Schedule           Task Scheduler
Running  SCardSvr           Smart Card
Running  SamSs              Security Accounts Manager
Running  SharedAccess       Windows Firewall/Internet Connectio...
Running  SENS               System Event Notification
Running  seclogon           Secondary Logon

範例 9:取得多部計算機上的服務

Get-Service -Name "WinRM" -ComputerName "localhost", "Server01", "Server02" |
 Format-Table -Property MachineName, Status, Name, DisplayName -auto

MachineName    Status  Name  DisplayName
------------   ------  ----  -----------
localhost      Running WinRM Windows Remote Management (WS-Management)
Server01       Running WinRM Windows Remote Management (WS-Management)
Server02       Running WinRM Windows Remote Management (WS-Management)

此命令會 Get-Service 使用 Cmdlet 在兩部 Get-Service Winrm 遠端電腦和本機電腦上執行命令 (localhost)。

命令會在遠端電腦上執行,結果會傳回至本機電腦。 管線運算符 (|) 會將結果傳送至 Format-Table Cmdlet,此 Cmdlet 會將服務格式化為數據表。 Format-Table此命令會使用 Property 參數來指定資料表中顯示的屬性,包括 MachineName 屬性。

範例 10:取得服務的相依服務

此範例會取得 WinRM 服務所需的服務。 傳回服務的 ServicesDependedOn 屬性值。

Get-Service "WinRM" -RequiredServices

範例 11:透過管線操作員取得服務

此範例會取得本機電腦上的WinRM服務。 服務名稱字串以引號括住,會將管線向下傳送至 Get-Service

"WinRM" | Get-Service

參數

-ComputerName

取得在指定計算機上執行的服務。 預設是本機電腦。

輸入遠端電腦的 NetBIOS 名稱、IP 位址或完整功能變數名稱 (FQDN)。 若要指定本機電腦,請輸入電腦名稱、點 (.), 或 localhost

此參數不依賴 Windows PowerShell 遠端處理。 即使您的電腦未設定為執行遠端命令,您也可以使用 Get-Service ComputerName 參數。

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DependentServices

表示此 Cmdlet 只會取得相依於指定服務的服務。

Type:SwitchParameter
Aliases:DS
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DisplayName

指定要擷取之服務的顯示名稱,做為字串陣列。 允許通配符。

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Exclude

指定此 Cmdlet 從作業中排除的服務陣列字串數位。 此參數的值會 限定Name 參數。 輸入名稱專案或模式,例如 s*。 允許通配符。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

指定此 Cmdlet 包含在作業中的服務陣列字串數位。 此參數的值會 限定Name 參數。 輸入名稱專案或模式,例如 s*。 允許通配符。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

指定要 擷取之服務的 ServiceController 物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。 您可以使用管線將服務物件傳送至此 Cmdlet。

Type:ServiceController[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

指定要擷取的服務服務名稱。 允許通配符。

Type:String[]
Aliases:ServiceName
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-RequiredServices

表示此 Cmdlet 只會取得此服務所需的服務。 此參數會取得 服務的 ServicesDependedOn 屬性值。

Type:SwitchParameter
Aliases:SDO, ServicesDependedOn
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:True

輸入

ServiceController

您可以使用管線將服務物件傳送至此 Cmdlet。

String

您可以使用管線將服務名稱傳送至此 Cmdlet。

輸出

ServiceController

此 Cmdlet 會傳回代表電腦上服務的物件。

備註

Windows PowerShell 包含下列的 Get-Service別名:

  • gsv

此 Cmdlet 只有在目前用戶有權查看服務時,才能顯示服務。 如果此 Cmdlet 未顯示服務,您可能沒有看到這些服務的許可權。

若您要在您的系統上尋找每個服務的服務名稱與顯示名稱, 請輸入 Get-Service。 服務名稱會出現在 [名稱] 資料行中,而顯示名稱會出現在 DisplayName 數據行中

注意

一般而言, Get-Service 會傳回服務的相關信息,而不是驅動程式。 不過,如果您指定驅動程式的名稱, Get-Service 則會傳回驅動程式的相關信息。

  • 列舉不包含設備驅動器服務
  • 指定通配符時,Cmdlet 只會傳回 Windows 服務
  • 如果您指定 與裝置服務名稱完全相符的 NameDisplayName ,則會傳回裝置實例

當您依狀態值以遞增順序排序時, Stopped 服務會出現在服務之前 Running服務的 Status 屬性是列舉值,其中狀態的名稱代表整數值。 排序是以整數值為基礎,而不是名稱。 Running 會出現在 之前 Stopped ,因為 Stopped 具有的值 1,且 Running 值為 4。 如需詳細資訊,請參閱 ServiceControllerStatus