首页 > 解决方案 > Power Shell 获取服务问题

问题描述

嗨,我需要一个脚本来执行以下操作:

  1. 检查服务是否存在
  2. 如果服务不存在运行我的脚本
  3. 如果服务存在,什么也不做

这是我所拥有的,但它对我不起作用:

    $service = Get-WmiObject -Class Win32_Service -Filter "Name='servicename'"
if($service.Status -eq $NULL)
{
$CLID = $inclid
New-Item -Path "c:\" -Name "folder" -ItemType "directory"
Invoke-WebRequest -Uri https://something.com\setup.exe -OutFile c:\folder\swibm#$CLID#101518#.exe
$installer = "swibm#$CLID#101518#.exe"
Start-Process -FilePath $installer -WorkingDirectory "C:\folder"
}
else
{
Write-Host "Client Already Installed"
}

如果我$service.Status独自跑步,我会返回“OK”。在这种情况下,我需要脚本停止并运行 else 部分。我只希望这个脚本在$service.Status什么都不返回的情况下运行。我在哪里错了?

标签: powershell

解决方案


检查服务是否存在的更简单方法:

if( Get-WmiObject -Class Win32_Service -Filter "Name='servicename'" ) {
    # Service exists
}
else {
    # Service doesn't exist
}

...或使用Get-Servicecmdlet:

if( Get-Service -ErrorAction SilentlyContinue -Name servicename ) {
    # Service exists
}
else {
    # Service doesn't exist
}

推荐阅读