Получение списка моментальных снимков VMWare с помощью PowerCLI, которые соответствуют моим критериям

Я пытаюсь получить список моментальных снимков VMWare, Uid которых не соответствует XYZ, используя PowerCLI.

Я написал следующий код, чтобы сделать это.

$body +=echo ""`r`n""`r`n"-----Open VMware snapshots other than Uid 'XYZ'-----"`r`n""`r`n""
Get-VM | Get-snapshot | where {($_.Uid -notmatch 'XYZ')} |  ForEach-Object {
    $object=New-Object -TypeName PSObject -Property @{
        VM_Name = $_.VM
        Created = $_.Created
        Size = "$([math]::Round($_.SizeGB, 2)) GB"
        SnapshotName = $_.name
        Description = $_.extensiondata.description
                 }
    $body +=  $object | ft | out-string
    Write-Output $object    
    }

Запуск этого кода в PowerCLI возвращает все моментальные снимки VMWare, включая снимок с Uid «XYZ», чего не должно происходить.

Как изменить код?


person prudhvi    schedule 27.12.2016    source источник


Ответы (1)


Попробуйте использовать -ne или -notlike в сравнении Where-Object, так как кажется, что мы сравниваем строки, а не используем регулярные выражения.

Get-VM | Get-snapshot | where {($_.Uid -notlike 'XYZ')} | ForEach-Object ...

person AtomicFireball    schedule 27.12.2016
comment
Я использовал -notlike, но получил тот же ответ - person prudhvi; 27.12.2016