Set-Service

启动、停止和挂起服务并更改服务的属性。

语法

Set-Service [-Name] <string> [-Description <string>] [-DisplayName <string>] [-PassThru] [-StartupType {<Automatic> | <Manual> | <Disabled>}] [-Status <string>] [-ComputerName <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]

Set-Service [-Description <string>] [-DisplayName <string>] [-InputObject <ServiceController>] [-PassThru] [-StartupType {<Automatic> | <Manual> | <Disabled>}] [-Status <string>] [-ComputerName <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]

说明

Set-Service cmdlet 可更改本地或远程服务的属性,其中包括状态、说明、显示名称和启动模式。可以使用此 cmdlet 启动、停止或挂起(暂停)服务。若要标识服务,请输入其服务名称或提交服务对象,或者通过管道将服务名称或服务对象传递给 Set-Service。

参数

-ComputerName <string[]>

指定一台或多台计算机。默认值为本地计算机。

键入远程计算机的 NetBIOS 名称、IP 地址或完全限定的域名。要指定本地计算机,请键入计算机名称、句点 (.) 或“localhost”。

此参数不依赖于 Windows PowerShell 远程处理。即使您的计算机未配置为运行远程命令,您也可以使用 Set-Service 的 ComputerName 参数。

是否为必需?

false

位置?

named

默认值

本地计算机

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Description <string>

指定服务的新说明。

服务说明出现在计算机管理的“服务”中。Description 不是 Get-Service 所获取的 ServiceController 对象的属性。要查看服务说明,请使用 Get-WmiObject 获取表示服务的 Win32_Service 对象。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-DisplayName <string>

指定服务的新显示名称。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-InputObject <ServiceController>

指定 ServiceController 对象来表示要更改的服务。请输入包含该对象的变量,或者键入获取该对象的命令或表达式(如 Get-Service 命令)。也可以将服务对象通过管道传递给 Set-Service。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-Name <string>

指定要更改的服务的服务名称。不允许使用通配符。还可以通过管道将服务名称传递给 Set-Service。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-PassThru

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

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-StartupType <ServiceStartMode>

更改服务的启动模式。StartupType 的有效值包括:

-- Automatic:在系统启动时启动。

-- Manual:仅在由用户或程序启动时才启动。

-- Disabled:无法启动。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Status <string>

启动、停止或挂起(暂停)服务。有效值包括:

-- Running:启动服务。

-- Stopped:停止服务。

-- Paused:挂起服务。

是否为必需?

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

可以将服务对象或包含服务名称的字符串通过管道传递给 Set-Service。

输出

此 cmdlet 不返回任何对象。

说明

要在 Windows Vista 以及 Windows 的更高版本上使用 Set-Service,请使用“以管理员身份运行”选项启动 Windows PowerShell。

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

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

示例 1

C:\PS>set-service -name lanmanworkstation -DisplayName "LanMan Workstation"

说明
-----------
此命令将 lanmanworkstation 服务的显示名称更改为“LanMan Workstation”。(默认值为“Workstation”。)





示例 2

C:\PS>get-wmiobject win32_service -filter "name = 'SysmonLog'"

ExitCode  : 0
Name      : SysmonLog
ProcessId : 0
StartMode : Manual
State     : Stopped
Status    : OK

C:\PS> set-service sysmonlog -startuptype automatic

C:\PS> get-wmiobject win32_service -filter "name = 'SysmonLog'"

ExitCode  : 0
Name      : SysmonLog
ProcessId : 0
StartMode : Auto
State     : Stopped
Status    : OK

C:\PS> get-wmiobject win32_service | format-table Name, StartMode -auto

Name                                  StartMode
----                                  ---------
AdtAgent                              Auto
Alerter                               Disabled
ALG                                   Manual
AppMgmt                               Manual
...

说明
-----------
这些命令获取性能日志和警报 (SysmonLog) 服务的启动类型,将启动模式设置为自动,然后显示更改结果。

这些命令使用 Get-WmiObject cmdlet 获取表示服务的 Win32_Service 对象,因为 Get-Service 所返回的 ServiceController 对象不包含启动模式。

第一条命令使用 Get-WmiObject cmdlet 获取表示 SysmonLog 服务的 Windows Management Instrumentation (WMI) 对象。此命令的默认输出显示该服务的启动类型。

第二条命令使用 Set-Service 将启动模式更改为自动。然后,重复第一条命令以显示更改。

最后一条命令显示计算机上所有服务的启动模式。





示例 3

C:\PS>set-service -name Schedule -computername S1 -description "Configures and schedules tasks."

C:\PS> get-wmiobject win32_service -computername s1 | where-object {$_.Name -eq "Schedule"} | format-list Name, Description

说明
-----------
这些命令更改远程计算机 S1 上的任务计划程序服务的说明,然后显示结果。

这些命令使用 Get-WmiObject cmdlet 获取表示服务的 Win32_Service 对象,因为 Get-Service 所返回的 ServiceController 对象不包含服务说明。

第一条命令使用 Set-Service 命令来更改说明。它使用服务的服务名称“Schedule”来标识该服务。

第二条命令使用 Get-WmiObject cmdlet 来获取表示任务计划程序服务的 WMI Win32_Service 实例。该命令中的第一个元素获取 Win32_service 类的所有实例。

管道运算符 (|) 将结果传递给 Where-Object cmdlet,该 cmdlet 选择 Name 属性中包含“Schedule”值的实例。

另一个管道运算符将结果发送给 Format-List cmdlet,该 cmdlet 将输出的格式设置为只包含 Name 和 Description 属性的列表。





示例 4

C:\PS>set-service winrm -status Running -passthru -computername Server02

说明
-----------
此命令启动计算机 Server02 上的 WinRM 服务。此命令使用 Status 参数指定所需状态(“running”),使用 PassThru 参数指示 Set-Service 返回表示 WinRM 服务的对象。





示例 5

C:\PS>get-service schedule -computername S1, S2 | set-service -status paused

说明
-----------
此命令挂起远程计算机 S1 和 S2 上的计划服务。它使用 Get-Service cmdlet 来获取该服务。管道运算符 (|) 将该服务发送给 Set-Service cmdlet,后者将服务状态更改为“Paused”。





示例 6

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

C:\PS> set-service -inputobject $s -status stopped

说明
-----------
这些命令停止本地计算机上的计划服务。

第一条命令使用 Get-Service cmdlet 获取计划服务。此命令将该服务保存在 $s 变量中。

第二条命令使用 Set-Service cmdlet 将计划服务的状态更改为“Stopped”。它使用 InputObject 参数提交 $s 变量中存储的服务,使用 Status 参数指定所需状态。





另请参阅

概念

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