PowerCLI Uzyskaj maszyny wirtualne, które spełniają niektóre warunki

0

Próbuję uzyskać nasze dystrybucje Linuksa z vCenter za pomocą PowerCLI. Ale nie chcę uzyskać maszyn wirtualnych urządzeń. Mam więc 2 różne skuteczne skrypty PowerCLI, które mogą znaleźć te maszyny. Chcę scalić te skrypty, ale jestem nowy w PowerCLI i jego składni.

Udostępniam te skrypty poniżej:


Lista innych urządzeń:

Get-VM | `
Get-Annotation | `
Where-Object {$_.name -eq "Appliance"} | `
Where-Object {$_.value -eq 'No'} | `
Export-Csv C:\Users\me\Documents\non-appliance-list.csv -NoTypeInformation -UseCulture

Lista Linux:

Get-View -Property @("Name", "Config.GuestFullName","Guest.GuestFullName") | `
Select -Property Name, @{N="COS";E={$_.Config.GuestFullName}}, @{N="ROS";E={$_.Guest.GuestFullName}} | `
Where-Object ({$_.ROS -like 'Centos*' -or $_.ROS -like 'Suse*' -or $_.ROS -like 'Ubuntu*'}) | `    
Select AnnotatedEntity,Name,Value | `
Export-Csv C:\Users\me\Documents\linux-list.csv -NoTypeInformation -UseCulture

Skrypt wyobrażałem sobie, ale nie działa:

Get-VM | `
Get-Annotation | `
Where-Object {$_.name -eq "Appliance"} | `
Where-Object {$_.value -eq 'No'} | `
Get-View -Property @("Name", "Config.GuestFullName","Guest.GuestFullName") | `
Select -Property Name, @{N="COS";E={$_.Config.GuestFullName}}, @{N="ROS";E={$_.Guest.GuestFullName}} | `
Where-Object ({$_.ROS -like 'Centos*' -or $_.ROS -like 'Suse*' -or $_.ROS -like 'Ubuntu*'}) | `    
Select AnnotatedEntity,Name,Value | `
Export-Csv C:\Users\me\Documents\linux--list.csv -NoTypeInformation -UseCulture

Może to było pytanie XY. Jeśli masz lepszy sposób na zdobycie maszyn wirtualnych systemu Linux, to nie są urządzenia, możesz powiedzieć mi tę metodę.

Gefolge
źródło

Odpowiedzi:

0

Dodałem zmienną o nazwie „vmlist” i ta zmienna zawiera komputery, które są Linuksem. Więc teraz $ vmlist = SecondScript. A potem wyeliminowałem urządzenia z tej listy za pomocą innego skryptu. Ostateczny skrypt znajduje się poniżej:

$vmlist=(Get-VM | `
Get-View -Property @("Name", "Config.GuestFullName","Guest.GuestFullName") | `
Select -Property Name, @{N="COS";E={$_.Config.GuestFullName}}, @{N="ROS";E= {$_.Guest.GuestFullName}} | `
Where-Object ({$_.ROS -like 'Centos*' -or $_.ROS -like 'RedHat*' -or $_.ROS -like 'Ubuntu*' -or $_.ROS -like 'Suse*'}))

Get-VM $vmlist.name | `
Get-Annotation | `                                                                              
Where-Object {$_.name -eq "Appliance"} | Where-Object {$_.value -eq 'No'} | `
Export-Csv C:\Users\myuser\Documents\Scripts\Outputs\linux-list.csv -NoTypeInformation -UseCulture      
Gefolge
źródło