我正在尝试输出检查条件是否匹配的值,而是输出返回值是否为真。
3 tests complete
Test duration: 873 ms
The following leaks were detected:lr
npm ERR! Test failed. See above for more details.
但是我得到的输出在所有情况下都是正确的,其中VM名称仅存在于comp1中。
$result = "VM name"
$name= get-content C:\monitor\Serverlist\Serverlist2.txt
foreach($nam1 in $name)
{
#Write-output $nam1
$l=Get-Vm -computername $nam1 |out-string
foreach ($l2 in $l)
{
if ( $l2 = $result )
{
Write-Output $input "is in" $nam1
}
else
{
""
}
}
}
if语句是否应该返回条件?我也尝试在第一个foreach循环之外循环if语句但是这给了我最后一个comp" comp3"的结果。甚至匹配的结果都在comp1中。 我想错的任何想法?
答案 0 :(得分:2)
=
符号不用于条件测试,它用于设置值:
if ( $l2 = $result )
{
Write-Output $input "is in" $nam1
}
应该是...... (请注意我使用-eq
来测试相等性)
if ( $l2 -eq $result )
{
Write-Output $input "is in" $nam1
}
但即使这样也行不通。您在string
和VirtualMachine
对象之间的条件测试无法正常工作。这就是你想要的......
if ( $l2.Name -eq $result )
{
Write-Output $input "is in" $nam1
}
在上面的代码段中,我使用您的变量对VirtualMachine.Name
(类型string
)进行了条件测试。