Я пытаюсь получить наши дистрибутивы Linux от vCenter с помощью PowerCLI. Но я не хочу получать виртуальные машины Appliance. Итак, у меня есть 2 разных успешных скрипта PowerCLI, которые могут найти эти машины. Я хочу объединить эти сценарии, но я новичок в PowerCLI и его синтаксис.

Я делюсь этими сценариями ниже:


Список неиспользуемых устройств:

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

Список 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

Сценарий, который я представил, но не сработал:

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

Может быть, это был XY-вопрос. Если у вас есть лучший способ получить виртуальные машины Linux, это не устройство, вы можете сказать мне этот метод.

1 ответ1

0

Я добавил переменную с именем "vmlist", и эта переменная содержит компьютеры под управлением Linux. Итак, теперь $ vmlist = SecondScript. А потом я исключил приборы из этого списка другим скриптом. Окончательный сценарий ниже:

$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      

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .