Get-Service

获取计算机上的服务。

语法

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

说明

此 cmdlet 仅在 Windows 平台上可用。

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 仅选择 Status 属性等于 的服务 Running

Status 是服务对象的唯一属性。 若要查看所有属性,请键入 Get-Service | Get-Member

示例 6:列出计算机上具有依赖服务的服务

此示例获取具有依赖服务的服务。

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 参数显示服务的名称、依赖服务的名称,以及显示每个服务的依赖服务数的计算属性。

示例 7:按属性值对服务进行排序

此示例显示,按 Status 属性的值按升序对服务进行排序时,停止的服务会显示在运行服务之前。 发生这种情况是因为 Status 的值是一个枚举,其中的 Stopped 值为 1,值为 Running4。 有关详细信息,请参阅 ServiceControllerStatus

若要首先列出正在运行的服务,请使用 cmdlet 的 Sort-ObjectDescending 参数。

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

示例 8:获取服务的依赖服务

此示例获取 WinRM 服务所需的服务。 返回服务的 ServicesDependedOn 属性的值。

Get-Service "WinRM" -RequiredServices

示例 9:通过管道运算符获取服务

此示例获取本地计算机上的 WinRM 服务。 用引号括起来的服务名称字符串在管道中向下发送到 Get-Service

"WinRM" | Get-Service

参数

-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

输入

System.ServiceProcess.ServiceController, System.String

可以通过管道将服务对象或服务名称传递给此 cmdlet。

输出

ServiceController

此 cmdlet 返回表示计算机上的服务的对象。

备注

此 cmdlet 仅在 Windows 平台上可用。

从 PowerShell 6.0 开始,将以下属性添加到 ServiceController 对象: UserNameDescriptionDelayedAutoStartBinaryPathNameStartupType

还可以通过其内置别名 gsv来引用 Get-Service 。 有关详细信息,请参阅 about_Aliases

仅当当前用户有权查看服务时,此 cmdlet 才能显示服务。 如果此 cmdlet 不显示服务,则可能无权查看它们。

若要查找系统上每个服务的服务名称和显示名称,请键入 Get-Service。 服务名称显示在 “名称” 列中,显示名称显示在 “DisplayName” 列中。

按状态值按升序排序时, Stopped 服务会显示在服务之前 Running 。 服务的 Status 属性是一个枚举值,其中状态的名称表示整数值。 该排序是基于整数值进行的,而非名称。 Running 之所以出现在 之前 Stopped ,是因为 Stopped 的 值为 1,并且 Running 值为 4。 有关详细信息,请参阅 ServiceControllerStatus