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