powercli Get-VM NOT匹配标签

时间:2013-12-20 12:23:55

标签: powershell tags powercli

我正在使用标签来过滤VM /识别特殊配置。

Get-VM -Tag TEST

现在我想让所有虚拟机都不匹配标签....有没有办法在没有额外循环的情况下删除与标签匹配的所有项目?

2 个答案:

答案 0 :(得分:1)

看来,没有。但是使用另一个循环并不是一个糟糕的解决方案。

应该是这样的:

Get-VM -Name * | ?{$_.Tag -ne "Test"}

如果VirtualMachine没有Tag属性,则应尝试使用Get-View

Get-View -Name * | ?{$_ .Tag -ne "Test"} | Get-VM

答案 1 :(得分:0)

我正在查看,我使用了-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.
    }
}