PowerShell循环问题

时间:2015-02-05 16:05:14

标签: powershell

我有一段代码来检查特定服务的状态,以及状态是否“正在运行”以启动它。该变量似乎在if / else语句之前具有正确的数据,但即使我将其中一个测试服务器的服务设置为off,它也总是推迟到其他地方。它会将一个服务报告为正在运行,一个服务停止,但会为两者报告“It's Down”。

提前感谢您的帮助

    $Servers = get-content c:\scripts\list.txt
    $Servers|foreach {
$service = Get-WmiObject -ComputerName $_ -Class Win32_Service -Filter "Name='Buildbot'" 
$status = Get-Service -ComputerName $_ -Name "Buildbot" | select Status
echo $status
if ($status -eq "Running") {"Its Up!"} else {"It's down"} 
    #$service.StartService()
    #"It should be up now"}
}

1 个答案:

答案 0 :(得分:0)

非常确定您的问题是您正在对一个对象进行字符串比较,其属性状态为假定为状态状态的字符串。像以下任一示例一样更新填充$status的行

$status = Get-Service -ComputerName $_ -Name "Buildbot" | select -ExpandProperty Status


$status = (Get-Service -ComputerName $_ -Name "Buildbot").Status

作为辅助考虑以下两个命令的输出

PS C:\Users\mcameron> Get-Service  -Name "Print Spooler" | select Status
 Status
 ------
Running

PS C:\Users\mcameron> Get-Service  -Name "Print Spooler" | select -expand Status
Running

第一个结果是具有属性Status的对象。第二个只是一个字符串。