Powershell的解析工作不正常

Powershell的解析工作不正常,powershell,powershell-3.0,powershell-4.0,powershell-remoting,cmdlet,Powershell,Powershell 3.0,Powershell 4.0,Powershell Remoting,Cmdlet,我编写了以下逻辑来检查服务状态: $status=@() if($var1 -match "True") { Write-Output "Service Enabled" } else { $status+="Service not Enabled" Write-Output "Service not Enabled" } if($status.count -le 1){ $returnStatus = "PASS" }else{ $o=$status -join "

我编写了以下逻辑来检查服务状态:

$status=@()

if($var1 -match "True") {
Write-Output "Service Enabled"
} else {
$status+="Service not Enabled"
Write-Output "Service not Enabled"
}

if($status.count -le 1){
    $returnStatus = "PASS"    
}else{
    $o=$status -join ", "
    $returnStatus = "FAIL- $o"
}

$getstatus = $returnStatus 
当我设置$var1=false时,输出应该是服务未启用,但它不正确


似乎问题在于$status始终具有1计数,即使在通过时也是如此
请建议是否有更好的逻辑来执行相同的逻辑。

您在变量名$returnsStatus/$returnStatus中有一个输入错误

这导致最终输出$getstatus不一致

请修复变量名并重试

提议的解决办法
该代码中没有执行路径,这将导致未启用服务写入输出。我已更新了我的问题,建议使用$True和$False注释$。因此,您设置$var1=$False,然后在字符串值上使用if$var1而不是-match进行测试。即使在更新$ReturnStatus之后,我也会得到相同的结果。问题似乎是$status的计数始终为1,即使它是通过的。请建议是否有更好的逻辑来执行相同的逻辑。@meallhour您得到的相同结果是什么得到?在更新的代码中,您在两个位置打印了相同的启用服务。更新了我的问题。我在这两种情况下都启用了服务。将比较从-le小于或等于-lt小于
$status=@()

if($var1 -match "True") {
    Write-Output "Service Enabled"
} else {
    $status+="Service not Enabled"
    # Fixed Message
    Write-Output "Service not Enabled"
}

# Fix comparison from -le to -lt
if($status.count -lt 1){
    $returnStatus = "PASS"    
}else{
    $o=$status -join ", "
    $returnStatus = "FAIL- $o"
}

$getstatus = $returnStatus