【问题标题】:Stop the Service, Restart and Start the service using Powershell使用 Powershell 停止服务、重新启动和启动服务
【发布时间】:2026-02-04 21:40:01
【问题描述】:

我需要停止服务,一旦服务停止,我需要重新启动系统。重启后,如果服务处于停止状态,我需要使用 powershell 脚本启动服务。

$stage= get-service -name "chrome"

if ( $stage.Status -eq "Running" )
{

Write-Host "The service " $stage.Name "is running"

Stop-Service -Name 'chrome'



}


if ( $stage.Status -eq "Stopped")

{
Restart-Computer -Wait

Start-Service 'chrome'


}

【问题讨论】:

  • 您的脚本无法在重新启动后继续存在,因此您要么必须从另一台计算机运行该脚本,要么让您的 chrome 服务自动启动,或者在启动时有一个计划任务来启动 chrome 服务。最简单的方法是在服务管理器中将 chrome 服务设置为自动(我相信默认值是什么?!)
  • @LievenKeersmaekers 我的情况对吗?或者我需要改变它。因为我需要验证它,一旦 chrome 服务停止,我只需要执行重启
  • 在您自己的计算机上执行 Restart-Computer -Wait 要么失败,要么在此时结束脚本(我不知道,还没有测试过)。无论哪种方式,以目前的形式,您的Start-Service 'chrome' 永远无法到达。将 chrome 服务设置为自动并让 Windows 负责在重新启动时启动它是否有问题?
  • @LievenKeersmaekers chrome 只是一个示例服务,我正在寻找其他服务。当我执行脚本时它只是停止服务它不会移动到下一步重新启动机器
  • Restart-Computer -Wait 在本地计算机上不起作用(解释见我的answer here

标签: powershell


【解决方案1】:

您可能需要从不同的服务器运行代码来实现您的目标。如上所述,一旦服务器重新启动,您将无法使用相同的脚本恢复。

除此之外,您还需要对脚本进行一些小改动。也就是说,您需要在 if 条件之间再次调用下面的代码。这样你就会得到预期的输出

$stage= get-service -name "chrome"

【讨论】: