New-Service
创建新的 Windows 服务。
语法
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:\my share\myservice.exe" arg1 arg2'
。 这些参数将传递给服务入口点。
有关详细信息,请参阅 CreateServiceW API 的 lpBinaryPathName 参数。
类型: | String |
别名: | Path |
Position: | 1 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-Confirm
提示你在运行 cmdlet 之前进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Credential
将服务使用的帐户指定为服务登录帐户。
键入用户名,如 User01 或 Domain01\User01,或输入 PSCredential 对象,例如由 Get-Credential
cmdlet 生成的对象。 键入用户名时,此 cmdlet 会提示输入密码。
凭据存储在 PSCredential 对象中,密码存储为 SecureString。
注意
有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。
类型: | PSCredential |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DependsOn
指定新服务所依赖的其他服务的名称。 若要输入多个服务名称,请使用逗号分隔这些名称。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Description
指定服务的描述。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DisplayName
指定服务的显示名称。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Name
指定服务的名称。 此参数是必需的。
类型: | String |
别名: | ServiceName |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-SecurityDescriptorSddl
以 Sddl 格式指定服务的 SecurityDescriptor。
类型: | String |
别名: | sd |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-StartupType
设置服务的启动类型。 此参数的可接受值为:
- Automatic - 服务将由操作系统在系统启动时启动或在系统启动时已启动。 如果自动启动的服务依赖于手动启动的服务,则手动启动的服务也会在系统启动时自动启动。
- AutomaticDelayedStart - 系统启动后不久启动。
- Disabled - 服务被禁用,不能由用户或应用程序启动。
- InvalidValue - 不支持此值。 使用此值会导致错误。
- Manual - 服务只能由用户(使用服务控制管理器)或应用程序手动启动。
默认值为 Automatic。
类型: | ServiceStartupType |
接受的值: | Automatic, Manual, Disabled, AutomaticDelayedStart, InvalidValue |
Position: | Named |
默认值: | Automatic |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
None
不能通过管道将对象传递给此 cmdlet。
输出
此 cmdlet 返回一个表示新服务的对象。
备注
此 cmdlet 仅在 Windows 平台上可用。
若要运行此 cmdlet,请使用“以管理员身份运行”选项启动 PowerShell。