有没有办法从 powershell 启动或停止服务并阻止直到服务启动?

有没有办法从 powershell 启动或停止服务并阻止直到服务启动?

我必须按照特定顺序重置一组服务器上的一系列服务。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-ServiceStart-Service将分别等待服务完全停止和启动。

您可以使用-Force开关使其Stop-Service也停止依赖于您尝试停止的服务的服务。

此外,如果您想摆脱“cmdlet 正在等待服务完成停止/启动”的警告消息,您可以添加开关-WarningAction SilentlyContinue

答案3

他们没有任何允许您同步执行此操作的参数。

您可以创建一个while循环来检查服务是否已启动。

相关内容