我正在尝试使用PowerShell创建和启动Windows服务。
创建服务但是当我使用除一个特定名称之外的各种名称时无法启动该服务。
当我使用exe文件的名称创建服务时,它可以启动,但是当我给它一个不同的名称时,它无法启动。
我正在以管理员身份运行PowerShell脚本。
有任何建议吗?
function InstallService(
[string] $MsDeployHost,
[string] $ServiceName,
[string] $DisplayName,
[string] $ServicePath,
[string] $ServiceDescription,
[object] $Credential) {
if($MsDeployHost -eq "local") {
New-Service -name $ServiceName -binaryPathName $ServicePath -displayName $ServiceName -StartupType Automatic
Start-Service -name $ServiceName
} else { ....
我得到的错误: Start-Service:服务'Service1 由于以下错误,无法启动(Service1)': 无法在计算机上启动Service1服务'。'。
当我尝试手动启动时,我得到: “错误1053:服务没有及时响应启动或控制请求”
答案 0 :(得分:5)
问题在于,除非编写您的服务来处理它,否则您需要使用特定服务名称才能运行特定服务。这是因为启动时,服务需要向服务控制管理器注册,以使用其服务名称接收启动/停止通知并发送状态更新。如果您使用不同的名称安装服务,但可执行文件无法知道这一点(通过配置设置或诸如此类),此注册将失败并且服务无法启动(对于操作系统,它看起来好像服务没有回复。)
您可以将显示名称设置为您喜欢的任何名称,但除非该服务旨在支持此功能,否则您无法使用任意服务名称。
答案 1 :(得分:0)
我的问题是该服务在服务控制管理器中为Disabled
。
然后我将其置于manual
状态,并且启动服务正常工作。
hth
答案 2 :(得分:0)
对我来说,这是appsettings.json
中的错误值。没有转义一些特殊字符。
答案 3 :(得分:0)
如果这也是 .NET 控制台应用程序,则必须在 Program.cs 的主方法中调用 ServiceBase.Run。这为我修复了这个错误。
在此处查看更具体的代码: .NET console application as Windows service