PowerCLI Obtenez des machines virtuelles adaptées à certaines conditions

0

J'essaie d'obtenir certaines distributions Linux de vCenter en utilisant PowerCLI. Mais je ne veux pas obtenir de machines virtuelles Appliance. J'ai donc 2 différents scripts PowerCLI réussis, ceux-ci peuvent trouver ces machines. Je veux fusionner ces scripts, mais je suis nouveau sur PowerCLI et sa syntaxe.

Je partage ces scripts ci-dessous:


Liste des non-appareils:

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

Liste 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

Script que j'ai imaginé mais qui n'a pas fonctionné:

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

Peut-être que c'était une question XY. Si vous avez un meilleur moyen d’obtenir des machines virtuelles Linux qui ne sont pas des appliances, vous pouvez me dire cette méthode.

Gefolge
la source

Réponses:

0

J'ai ajouté une variable nommée "vmlist" et cette variable contient des machines qui sont Linux. Alors maintenant, $ vmlist = SecondScript. Et puis j'ai éliminé les appareils de cette liste avec un autre script. Le script final est ci-dessous:

$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
la source