PowerCLI 获取符合某些条件的虚拟机

PowerCLI 获取符合某些条件的虚拟机

我正在尝试使用 PowerCLI 从 vCenter 获取一些 Linux 发行版。但我不想获取设备虚拟机。所以我有 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 VM,您可以告诉我这种方法。

答案1

我添加了一个名为“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      

相关内容