我正在使用标签来过滤虚拟机/识别特殊配置。
Get-VM -Tag TEST
现在我想获取所有与标签不匹配的虚拟机......有没有办法做到这一点而无需额外的循环来删除与标签匹配的所有项目?
我正在使用标签来过滤虚拟机/识别特殊配置。
Get-VM -Tag TEST
现在我想获取所有与标签不匹配的虚拟机......有没有办法做到这一点而无需额外的循环来删除与标签匹配的所有项目?
看起来,没有。但是使用另一个循环并不是一个糟糕的解决方案。
应该是这样的:
Get-VM -Name * | ?{$_.Tag -ne "Test"}
或者如果VirtualMachine
没有Tag
属性,您应该尝试Get-View
:
Get-View -Name * | ?{$_ .Tag -ne "Test"} | Get-VM
我在看这个,我使用-contains
/-notcontains
比较运算符而不是-eq
/ -ne
,因为它总是返回一个布尔表达式。如果您有多个标签,它可能无法正常工作。
$VMs = get-vm
foreach ($VM in $VMs){
If (((Get-Tagassignment $VM).Tag.Name -notcontains "Prod"){
Whatever you want if it doesn't contain prod.
}
}