下面检查是否存在注册表项并根据“TRUE”的结果如何让脚本捕获并处理它?
示例 -$testpath1
将永远存在。然而$testpath2, $testpath3
或$testpath4
可能并不总是存在。因此,脚本应该只处理 testpath1,因为它返回为真。
但是,如果$testpath2
并且$testpath3
存在,那么脚本应该处理到$testpath3
并忽略$testpath4
我有以下内容,但问题是一旦确定第一个语句为真,它只处理那个语句并绕过所有其他语句。我真的希望脚本遍历每个语句和包含错误的语句,然后忽略该语句并处理它之前的语句。我猜 IF ELSE 不适用于这样的事情——那我应该用什么?
这是代码,下面的结果是:
结果: 1 is true
然而$testpath1
并$testpath2
存在...
$CommunityName = Get-ChildItem HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration | ForEach-Object {Get-ItemProperty $_.pspath} | where-object {$_.PSChildName } | Foreach-Object {$_.PSChildName}
$testpath1 = (Get-ItemProperty hklm:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\$CommunityName -Name 1) -ne $null 2>$null
$testpath2 = (Get-ItemProperty hklm:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\$CommunityName -Name 2) -ne $null 2>$null
$testpath3 = (Get-ItemProperty hklm:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\$CommunityName -Name 3) -ne $null 2>$null
$testpath4 = (Get-ItemProperty hklm:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\$CommunityName -Name 4) -ne $null 2>$null
if ($testpath1 -eq 'TRUE')
{
Write-Host "1 is true"
}
elseif ($testpath1 -eq 'TRUE' -and $testpath2 -eq 'TRUE')
{
Write-Host "1 and 2 is true"
}
elseif ($testpath1 -eq 'TRUE' -and $testpath2 -eq 'TRUE' -and $testpath3 -eq 'TRUE')
{
Write-Host "1 and 2 and 3 are true"
}
elseif ($testpath1 -eq 'TRUE' -and $testpath2 -eq 'TRUE' -and $testpath3 -eq 'TRUE' -and $testpath4 -eq 'TRUE')
{
Write-Host "1 and 2 and 3 and 4 are true"
}