New-Service

创建新的 Windows 服务。

语法

Default (默认值)

New-Service
    [-Name] <String>
    [-BinaryPathName] <String>
    [-DisplayName <String>]
    [-Description <String>]
    [-StartupType <ServiceStartMode>]
    [-Credential <PSCredential>]
    [-DependsOn <String[]>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

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:删除服务

sc.exe delete TestService
# - or -
(Get-CimInstance -Class Win32_Service -Filter "name='TestService'").Delete()

此示例演示了删除 TestService 服务的两种方法。 第一个命令使用 Sc.exe的 delete 选项。 第二个命令使用 返回的 Win32_Service 对象的 Get-CimInstance 方法。

参数

-BinaryPathName

指定服务的可执行文件的路径。 此参数是必需的。

服务二进制文件的完全限定路径。 如果路径包含空格,则必须引用它,以便正确解释它。 例如,应将 D:\my share\myservice.exe 指定为 '"D:\my share\myservice.exe"'

该路径还可以包含自动启动服务的参数。 例如,'"D:\my share\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

将服务使用的帐户指定为 服务登录帐户

键入用户名(如 User01Domain01\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

-StartupType

设置服务的启动类型。 此参数的可接受值为:

  • Automatic - 服务将由操作系统在系统启动时启动或在系统启动时已启动。 如果自动启动的服务依赖于手动启动的服务,则系统启动时也会自动启动手动启动服务。
  • 禁用 - 服务已禁用,不能由用户或应用程序启动。
  • 手动 - 服务仅由用户使用服务控制管理器或应用程序手动启动。
  • 启动 - 指示服务是系统加载程序启动的设备驱动程序。 此值仅适用于设备驱动程序。
  • 系统 - 指示服务是“IOInitSystem()”函数启动的设备驱动程序。 此值仅适用于设备驱动程序。

默认值为 自动

参数属性

类型:ServiceStartMode
默认值:Automatic
接受的值:Boot, System, Automatic, Manual, Disabled
支持通配符: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,请使用 以管理员身份运行 选项启动 PowerShell。

若要删除服务、使用 Sc.exe或使用 Get-CimInstance cmdlet 获取表示服务的 Win32_Service 对象,然后使用 Delete 方法删除服务。 Get-Service 返回的对象没有 delete 方法。