我必须按照特定顺序重置一组服务器上的一系列服务。sc.exe
是异步的,当服务处于START_PENDING或者STOP_PENDING状态时会返回。Start-Service
/Stop-Service
将等待服务启动或停止,但它仅在本地机器上起作用,并且我的环境中没有启用远程处理。
是否有其他 exe 或 CmdLet 可以执行此操作?看来我必须使用 .NET API。
答案1
实际上,可以在远程计算机上使用Start-Service
和PowerShell 命令(关于此的讨论Stop-Service
这里)我已经测试过并确认它可以正常工作:
Start-Service -inputobject $(get-service -ComputerName SERVER_NAME -Name SERVICE_NAME)
另外,您可以尝试wmic
停止该服务。它似乎会等待服务停止后再继续,尽管我还没有彻底测试过这一点。
wmic /node:"SERVER_NAME" service where name="SERVICE_NAME" call stopservice
答案2
PowerShell cmdletStop-Service
和Start-Service
将分别等待服务完全停止和启动。
您可以使用-Force
开关使其Stop-Service
也停止依赖于您尝试停止的服务的服务。
此外,如果您想摆脱“cmdlet 正在等待服务完成停止/启动”的警告消息,您可以添加开关-WarningAction SilentlyContinue
。
答案3
他们没有任何允许您同步执行此操作的参数。
您可以创建一个while
循环来检查服务是否已启动。