Start-Service

启动一个或多个已停止的服务。

语法

Start-Service [-Name] <string[]> [-Exclude <string[]>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Start-Service -DisplayName <string[]> [-Exclude <string[]>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Start-Service [-InputObject <ServiceController[]>] [-Exclude <string[]>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

说明

Start-Service cmdlet 为每一个指定的服务向 Windows 服务控制器发送一条启动消息。如果服务已在运行,则无错误忽略该消息。您可以通过服务名称或显示名称来指定服务,也可以使用 InputObject 参数提供一个服务对象来表示要启动的服务。

参数

-DisplayName <string[]>

指定要启动的服务的显示名称。允许使用通配符。

是否为必需?

true

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Exclude <string[]>

忽略指定服务。此参数的值对 Name 参数进行限定。请输入名称元素或模式,例如“s*”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Include <string[]>

只启动指定的服务。此参数的值对 Name 参数进行限定。请输入名称元素或模式,例如“s*”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-InputObject <ServiceController[]>

指定表示要启动的服务的 ServiceController 对象。输入一个包含对象的变量,或键入可获取对象的命令或表达式。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-Name <string[]>

指定要启动的服务的服务名称。

参数名为可选项。可以使用“-Name”或其别名“-ServiceName”,也可以忽略该参数名称。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-PassThru

返回一个表示服务的对象。默认情况下,此 cmdlet 将不产生任何输出。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Confirm

在执行命令之前提示您进行确认。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-WhatIf

描述如果执行该命令会发生什么情况(无需实际执行该命令)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.ServiceProcess.ServiceController, System.String

可以通过管道将对象(该对象表示包含服务名称的服务或字符串)传递给 Start-Service。

输出

“无”或 System.ServiceProcess.ServiceController

如果使用 PassThru 参数,则 Start-Service 生成表示服务的 System.ServiceProcess.ServiceController 对象。否则,此 cmdlet 将不产生任何输出。

说明

还可以使用 Start-Service 的内置别名“sasv”来对其进行引用。有关详细信息,请参阅 about_Aliases。

Start-Service 只有在当前用户有相应权限时才能控制服务。如果某个命令不能正常工作,则可能您不具有所需的权限。

若要查找服务名称并显示您的系统中的服务名称,请键入“get-service”。服务名称显示在 Name 列中,显示名称显示在 DisplayName 列中。

只能启动具有“Manual”或“Automatic”启动类型的服务。无法启动其启动类型为“Disabled”的服务。如果 Start-Service 命令失败,并且显示消息“无法启动计算机上的服务 <服务名称>”,请使用 Get-WmiObject 命令来查找该服务的启动类型,如有必要,还可以使用 Set-Service 命令来更改该服务的启动类型。

某些服务在没有工作时将自动停止,例如性能日志和警报 (SysmonLog) 服务。如果 Windows PowerShell 启动服务后,该服务几乎立即自行停止,则会显示以下消息:“服务 <显示名称> 启动失败。”

示例 1

C:\PS>start-service -name eventlog

说明
-----------
此命令启动本地计算机上的 EventLog 服务。它使用 Name 参数通过服务名称来标识服务。





示例 2

C:\PS>start-service -displayname *remote* -whatif

说明
-----------
此命令显示在启动显示名称中包含“remote”的服务后会发生的情况。它使用 DisplayName 参数通过服务的显示名称(而不是服务名称)来指定服务。另外,它使用 WhatIf 参数来显示执行该命令后会发生的情况,而不是实际执行该命令。





示例 3

C:\PS>$s = get-service wmi

C:\PS>start-service -InputObject $s -passthru | format-list >> services.txt

说明
-----------
这些命令启动计算机上的 Windows Management Instrumentation (WMI) 服务,并将操作记录添加到 services.txt 文件中。第一条命令使用 Get-Service cmdlet 来获取表示 WMI 服务的对象,并将该对象存储在 $s 变量中。

第二条命令使用 Start-Service cmdlet 来启动 WMI 服务。该命令通过使用 InputObject 参数将包含 WMI 服务对象的 $s 变量传递给 Start-Service 来标识服务。然后,它使用 PassThru 参数来创建表示启动该服务的对象。如果不使用此参数,则 Start-Service 不创建任何输出。

管道运算符 (|) 将 Start-Service 创建的对象传递给 Format-List cmdlet,该 cmdlet 将对象的格式设置为其属性的列表。追加重定向运算符 (>>) 将输出重定向到 services.txt 文件,并在其中将该输出添加到现有文件的末尾。





示例 4

C:\PS># start-service

说明
-----------
这一组命令显示在服务启动类型为“Disabled”时如何启动服务。第一条命令使用 Start-Service cmdlet 来启动 Telnet 服务 (tlntsvr),但执行失败。

C:\PS>start-service tlntsvr

Start-Service : Service 'Telnet (TlntSvr)' cannot be started due to the    following error: Cannot start service TlntSvr on computer '.'.
At line:1 char:14
+ start-service  <<<< tlntsvr

第二条命令使用 Get-WmiObject cmdlet 来获取 Tlntsvr 服务。此命令在 StartMode 字段中检索具有启动类型属性的对象。结果显示 Tlntsvr 服务的启动类型为“Disabled”。

C:\PS> get-wmiobject win32_service | where-object {$_.Name -eq "tlntsvr"}

ExitCode  : 0
Name      : TlntSvr
ProcessId : 0
StartMode : Disabled
State     : Stopped
Status    : OK

下一个命令使用 Set-Service cmdlet 将 Tlntsvr 服务的启动类型更改为“Manual”。

C:\PS> set-service tlntsvr -startuptype manual

现在,可以重新提交 Start-Service 命令。这次,该命令执行成功。

C:\PS> start-service tlntsvr

若要验证命令是否成功,请使用 Get-Service。





另请参阅

概念

Get-Service
Suspend-Service
Stop-Service
Restart-Service
Resume-Service
Set-Service
New-Service