New-Service
创建新的 Windows 服务。
语法
Default (默认值)
New-Service
    [-Name] <String>
    [-BinaryPathName] <String>
    [-DisplayName <String>]
    [-Description <String>]
    [-SecurityDescriptorSddl <String>]
    [-StartupType <ServiceStartupType>]
    [-Credential <PSCredential>]
    [-DependsOn <String[]>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
说明
此 cmdlet 仅在 Windows 平台上可用。
              New-Service cmdlet 为注册表和服务数据库中的 Windows 服务创建新条目。 新服务需要一个在服务期间运行的可执行文件。
使用此 cmdlet 的参数可以设置服务的显示名称、说明、启动类型和依赖项。
示例
示例 1:创建服务
New-Service -Name "TestService" -BinaryPathName '"C:\WINDOWS\System32\svchost.exe -k netsvcs"'
此命令创建名为 TestService 的服务。
示例 2:创建包含说明、启动类型和显示名称的服务
$params = @{
  Name = "TestService"
  BinaryPathName = '"C:\WINDOWS\System32\svchost.exe -k netsvcs"'
  DependsOn = "NetLogon"
  DisplayName = "Test Service"
  StartupType = "Manual"
  Description = "This is a test service."
}
New-Service @params
此命令创建名为 TestService 的服务。 它使用 New-Service 的参数来指定新服务的说明、启动类型和显示名称。
示例 3:查看新服务
Get-CimInstance -ClassName Win32_Service -Filter "Name='testservice'"
ExitCode  : 0
Name      : testservice
ProcessId : 0
StartMode : Auto
State     : Stopped
Status    : OK
此命令使用 Get-CimInstance 获取新服务的 Win32_Service 对象。 此对象包括启动模式和服务说明。
示例 4:在创建时设置服务的 SecurityDescriptor。 
	此示例添加所创建的服务的 SecurityDescriptor。
$SDDL = "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;SU)"
$params = @{
  BinaryPathName = '"C:\WINDOWS\System32\svchost.exe -k netsvcs"'
  DependsOn = "NetLogon"
  DisplayName = "Test Service"
  StartupType = "Manual"
  Description = "This is a test service."
  SecurityDescriptorSddl = $SDDL
}
New-Service @params
              SecurityDescriptor 存储在 $SDDLToSet 变量中。 
              SecurityDescriptorSddl 参数使用 $SDDL 来设置新服务的 SecurityDescriptor。
参数
-BinaryPathName  
		指定服务的可执行文件的路径。 此参数是必需的。
服务二进制文件的完全限定路径。 如果路径包含空格,则必须引用它,以便正确解释它。 例如,应将 d:\my share\myservice.exe 指定为 '"d:\my share\myservice.exe"'。
该路径还可以包含自动启动服务的参数。 例如,'"d:\myshare\myservice.exe arg1 arg2"'。 这些参数将传递给服务入口点。
有关详细信息,请参阅 CreateServiceW API 的 lpBinaryPathName 参数。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | 路径 | 
参数集
(All)
| Position: | 1 | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Confirm
在运行 cmdlet 之前,提示你进行确认。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | cf | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Credential
将服务使用的帐户指定为 服务登录帐户。
键入用户名(如 User01 或 Domain01\User01),或输入 PSCredential 对象,例如由 Get-Credential cmdlet 生成的用户名。 如果键入用户名,此 cmdlet 会提示输入密码。
凭据存储在 PSCredential 对象中,密码存储为 SecureString。
注释
有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。
参数属性
| 类型: | PSCredential | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-DependsOn 
		指定新服务所依赖的其他服务的名称。 若要输入多个服务名称,请使用逗号分隔名称。
参数属性
| 类型: | String[] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Description
指定服务的说明。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-DisplayName 
		指定服务的显示名称。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Name
指定服务的名称。 此参数是必需的。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | 服务名称 | 
参数集
(All)
| Position: | 0 | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-SecurityDescriptorSddl  
		以 Sddl 格式指定服务的 SecurityDescriptor。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | sd | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-StartupType 
		设置服务的启动类型。 此参数的可接受值为:
- Automatic - 服务将由操作系统在系统启动时启动或在系统启动时已启动。 如果自动启动的服务依赖于手动启动的服务,则系统启动时也会自动启动手动启动服务。
- AutomaticDelayedStart - 系统启动后不久启动。
- 禁用 - 服务已禁用,不能由用户或应用程序启动。
- InvalidValue - 不支持此值。 使用此值会导致错误。
- 手动 - 服务仅由用户使用服务控制管理器或应用程序手动启动。
默认值为 自动。
参数属性
| 类型: | ServiceStartupType | 
| 默认值: | Automatic | 
| 接受的值: | Automatic, Manual, Disabled, AutomaticDelayedStart, InvalidValue | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-WhatIf 
		显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | 无线 | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
None
不能通过管道将输入传递给此 cmdlet。
输出
ServiceController
此 cmdlet 返回一个表示新服务的对象。
备注
此 cmdlet 仅在 Windows 平台上可用。
若要运行此 cmdlet,请使用 以管理员身份运行 选项启动 PowerShell。