介绍
根据本文档可以通过执行以下命令来检查 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