当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 停止服务

作者:精品下载站 日期:2024-12-14 01:58:25 浏览:16 分类:玩电脑

如何使用 PowerShell 停止服务


服务在计算机后台持续运行。但有时您需要先停止服务才能执行特定任务。我们可以使用 PowerShell 中的 Stop-Service cmdlet 来完成此操作。

该 cmdlet 附带了一些选项,例如强制停止服务、根据名称的一部分停止多个服务,以及允许脚本在服务停止时继续运行的无等待选项。

在本文中,我们将了解使用 PowerShell 停止服务的不同选项。

使用 PowerShell 停止服务

要停止服务,我们需要知道服务的名称。该名称通常与服务的显示名称不同。当您打开 services.msc 控制台时,其中列出的名称是显示名称,而不是服务名称。

例如,当我们查看“Print Spooler”服务时,它的服务名称实际上是“Spooler”。当我们使用 Get-Service cmdlet 查找服务时,我们也可以看到这一点:

Get-Service -displayname "Print Spooler"

# Result
Status   Name               DisplayName
------   ----               -----------
Running  Spooler            Print Spooler

因此,要在这种情况下停止服务,您有三种选择。您可以使用服务的实际名称、使用 -displayname 参数或通过管道在 Get-Service 后面的 Stop-Service cmdlet 来停止它小命令:

# Stop service by it's name
Stop-Service "Spooler"

# Stop service based on the display name
Stop-Service -Display "Print Spooler"

# Get service first, then stop it
Get-Service -displayname "Print Spooler" | Stop-Service

[玩转系统] 如何使用 PowerShell 停止服务

使用通配符

如果您不知道服务的确切名称,那么您还可以使用通配符来查找要停止的服务。

此方法还允许您使用单个命令停止包含相同名称的多个服务。例如,要停止所有 Google 服务,我们首先获取名称以 Google 开头的所有服务,然后使用 stop-service cmdlet 停止所有服务:

# Stop all services where the name starts with Google
Stop-Service -Name "Google*" | Stop-Service

使用通配符时,您有时想要或需要排除特定服务。我们可以使用 -exclude 参数来做到这一点,该参数也支持通配符。通过这种方式,我们可以获得除 Chrome 服务之外的所有 Google 服务:

Stop-Service -Name "Google*" -Exclude "*Chrome*"

[玩转系统] 如何使用 PowerShell 停止服务

您还可以使用 -Include 参数,因此对于上面的示例,您可以获取名称包含 Google 的所有服务,并包含“Update”以仅获取更新程序服务。

强制停止服务

有些服务不喜欢被停止。该服务可能正在处理某项任务或具有依赖的服务,从而阻止您停止它。

为了解决这个问题,我们可以使用-Force参数。这将停止服务,即使它有依赖的服务。

Stop-Service -Name "iisadmin" -Force

当使用强制选项停止具有依赖服务的服务时,最好同时使用 -Confirm 选项。这样,如果您也想停止每个相关服务,您可以检查并确认它。

无需等待

当您使用 PowerShell 停止服务时,您的脚本将等到服务实际停止后才继续。在大多数情况下,这很好,也是推荐的方法,但有时您的服务需要很长时间才能停止,而您的脚本不需要等待它。

对于这些情况,您可以使用 -NoWait 选项。这将告诉 PowerShell 在服务停止时它可以继续执行脚本的其余部分:

Stop-Service -Name "Spooler" -NoWait

停止远程计算机上的服务

要使用 PowerShell 停止远程计算机上的服务,我们首先需要使用 Get-Service cmdlet 获取远程计算机上的服务,然后可以在其后面通过管道传输 stop-service cmdlet。

Get-Service cmdlet 通过 -Computername 参数提供对远程计算机的内置支持。此处需要注意的是,此方法不适用于 PowerShell 7 及更高版本

Get-Service -ComputerName $hostname -Name "Spooler" | Stop-Service

使用 PowerShell 7 时,我们需要使用 Invoke-Command cmdlet。此 cmdlet 允许您在远程计算机上运行脚本或命令。要使用 PowerShell 7 停止远程计算机上的服务,我们可以执行以下操作:

Invoke-Command -ComputerName $hostname -ScriptBlock { Stop-Service -Name "Spooler" }

总结

使用 PowerShell 停止服务并不难,只需确保使用正确的服务名称或使用显示名称参数即可。

希望这篇文章对您有所帮助,如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯