我正在从Hyper-V返回IP / MAC地址
对于具有多个IP / MAC地址的VM,我将获得重复的VM名称,即IE,如果VM具有2个IP / MAC,则我将获得2个相同的VM名称,如果具有3个IP / MAC,则将获得3个相同的VM名称, VMname存储在$virtm
变量中
$vms=Get-VM | Where { $_.State –eq ‘Running’ } | Select-Object -ExpandProperty Name
foreach($vm in $vms) {
$out=Get-VMNetworkAdapter -vmname $vm | select VMName, MacAddress, IPAddresses
$virtm=($out.VMName | ForEach-Object {
$_ | Get-Unique
})
$ip=($out.IPAddresses | ForEach-Object {
$_ | ? {$_ -notmatch ':'}
}) -join " "
$mac = ($out.MacAddress | ForEach-Object {
$_.Insert(2,":").Insert(5,":").Insert(8,":").Insert(11,":").Insert(14,":")
}) -join ' '
Write-Output "$virtm, $ip, $mac"
}
当前输出
OAP80 OAP80, 192.168.1.45 192.168.2.45, 00:15:5D:58:12:5E 00:15:5D:58:12:5F
所需的输出
OAP80, 192.168.1.45 192.168.2.45, 00:15:5D:58:12:5E 00:15:5D:58:12:5F
我很傻
而不是
$virtm=($out.VMName | ForEach-Object {
$_ | Get-Unique
})
只需要$virtm=$out.VMName | Get-Unique