Start-Service

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

语法

Start-Service
     [-InputObject] <ServiceController[]>
     [-PassThru]
     [-Include <String[]>]
     [-Exclude <String[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Service
     [-Name] <String[]>
     [-PassThru]
     [-Include <String[]>]
     [-Exclude <String[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Service
     [-PassThru]
     -DisplayName <String[]>
     [-Include <String[]>]
     [-Exclude <String[]>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

说明

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

示例

示例 1:通过使用服务名称启动服务

此示例启动本地计算机上的 EventLog 服务。 Name 参数通过服务名称来标识服务。

Start-Service -Name "eventlog"

示例 2:在不启动服务的情况下显示信息

此示例显示在启动显示名称中包含“remote”的服务后会发生的情况。

Start-Service -DisplayName *remote* -WhatIf

DisplayName 参数通过服务的显示名称(而不是服务名称)来识别服务。 WhatIf 参数导致 cmdlet 显示当你运行该命令但未进行更改时会发生的情况。

示例 3:启动服务,并将操作记录到文本文件中

此示例启动计算机上的 Windows Management Instrumentation (WMI) 服务,并将操作记录添加到 services.txt 文件中。

$s = Get-Service wmi
Start-Service -InputObject $s -PassThru | Format-List >> services.txt

首先,我们使用 Get-Service 获取表示 WMI 服务的对象,并将该对象存储在 $s 变量中。 下一步,我们启动服务。 如果不使用 PassThru 参数,则 Start-Service 不创建任何输出。 管道运算符 (|) 将 Start-Service 的对象输出传递给 Format-List cmdlet,以将该对象的格式设置为其属性的列表。 追加重定向运算符 (>>) 将输出重定向到 services.txt 文件。 输出添加到现有文件的末尾。

示例 4:启动禁用的服务

此示例显示在服务启动类型为“已禁用”时如何启动服务。

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

PS> Get-CimInstance win32_service | Where-Object Name -eq "tlntsvr"
ExitCode  : 0
Name      : TlntSvr
ProcessId : 0
StartMode : Disabled
State     : Stopped
Status    : OK

PS> Set-Service tlntsvr -StartupType manual
PS> Start-Service tlntsvr

第一次尝试启动 Telnet 服务 (tlntsvr),但执行失败。 Get-CimInstance 命令显示 Tlntsvr 服务的“StartMode”属性为“已禁用”。 Set-Service cmdlet 可将启动类型更改为“手动”。 现在,可以重新提交 Start-Service 命令。 这次,该命令执行成功。 若要验证命令是否成功,请运行 Get-Service

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-DisplayName

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

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:True

-Exclude

指定此 cmdlet 省略的服务。 此参数值使 Name 参数有效。 输入名称元素或模式,例如 s*。 允许使用通配符。

类型:String[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:True

-Include

指定此 cmdlet 启动的服务。 此参数值使 Name 参数有效。 输入名称元素或模式,例如 s*。 允许使用通配符。

类型:String[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:True

-InputObject

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

类型:ServiceController[]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Name

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

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

类型:String[]
别名:ServiceName
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-PassThru

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

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

ServiceController

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

String

可以通过管道将包含服务名称的字符串传递给此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

ServiceController

使用 PassThru 参数时,此 cmdlet 返回表示该服务的 ServiceController 对象。

备注

Windows PowerShell 包含 Start-Service 的以下别名:

  • sasv

  • 仅在当前用户具有执行此操作的权限时,Start-Service 才能控制服务。 如果某个命令不能正常工作,则可能你不具有所需的权限。

  • 若要查找服务名称并显示系统中的服务名称,请键入 Get-Service。 服务名称显示在 Name 列中,显示名称显示在 DisplayName 列中。

  • 只能启动具有“手动”或“自动”(延迟启用)启动类型的服务。 无法启动启动类型为 Disabled 的服务。 如果 Start-Service 命令失败,并显示消息 Cannot start service \<service-name\> on computer,请使用 Get-CimInstance 命令查找该服务的启动类型,如有必要,还可以使用 Set-Service cmdlet 更改该服务的启动类型。

  • 某些服务在没有工作时将自动停止,例如性能日志和警报 (SysmonLog) 服务。 如果 PowerShell 启动服务后,该服务几乎立即自行停止,则会显示以下消息:Service \<display-name\> start failed.