【发布时间】:2015-02-10 01:45:50
【问题描述】:
以下代码有问题:
$NodeList = (get-scvmhostcluster ClusterName| where-object {$_.nodes.fullyqualifieddomainname -ne "Host001.Domain.Tld"}).nodes.fullyqualifieddomainname
通常这应该从主机列表中过滤掉列表中的“Host001.Domain.tld”。 (Host001 到 Host014 是这个列表通常生成的,未经过滤)。
但是,当运行脚本块并查看 $NodeList 变量中的内容时,我会得到每个对象,就好像没有应用过滤器一样。
我已经尝试调试了几个小时,但无济于事。
谁能指出我的错误?
问候,
【问题讨论】:
-
如果你执行
get-scvmhostcluster ClusterName| foreach-object {$_.nodes.fullyqualifieddomainname},你会得到任何值吗? -
是的,我得到了集群中主机的所有 FQDN。
-
fullyqualifieddomainname是一个字符串吗?如果你在 where-object 块上放一个断点,然后检查$_.nodes.fullyqualifieddomainname.GetType()你会得到什么? -
我还想知道导致比较失败的字符串上是否有空格。也许你会从
where-object {$_.nodes.fullyqualifieddomainname -notlike "*Host001.Domain.Tld*"}得到结果 -
马特,没有空格(你的代码块没有改变任何东西)米奇,字符串对象是的
标签: powershell filtering