如何使用 Powershell 检查特定服务是否存在?

如何使用 Powershell 检查特定服务是否存在?

介绍

根据本文档可以通过执行以下命令来检查 Windows 上哪些服务已停止:

Get-Service | Where-Object {$_.status -eq "stopped"}

在 PowerShell 中。

问题

为了检查某个服务(例如 tomcat8)是否存在,需要在 PowerShell 中发出哪个命令?

答案1

您可以使用属性指定服务名称-Name。默认情况下,如果未看到匹配的服务,则会给出错误。使用-ErrorAction SilentlyContinue您可以返回一个空变量。

$service = Get-Service -Name W32Time -ErrorAction SilentlyContinue

一旦有了它,您就可以查看长度是否大于 0。

if ($service.Length -gt 0) {
    # Do cool stuff
    }

答案2

这是一个比接受的答案稍微干净一点的解决方案:

$service = Get-Service -Name MSSQLSERVER -ErrorAction SilentlyContinue
if($service -eq $null)
{
    # Service does not exist
} else {
    # Service does exist
}

在我看来,检查它是否为 NULL 在语义上比检查长度属性更有意义。

这已在以下版本的 PowerShell 中测试并可正常运行:

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      0      3          

我无法谈论其他版本的 PowerShell,但如果您有问题,请发表评论。

答案3

假设 DHCP 服务确实存在,使用 $(Get-Service dhcp) -eq $null 将返回 false。但是,$(Get-Service dhcp) -ne $null 将返回 true

相关内容