Powershell - 从集合中删除重复项
Powershell - Remove duplicates from collection
我从 Hyper-V
返回 IP/MAC 个地址
对于具有多个 IP/MAC 地址的 VM,我得到重复的 VM 名称,IE,如果 VM 有 2 个 IP/MAC 我得到 2 个相同的 VM 名称,如果它有 3 个 [=26] =] 然后得到 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
我从 Hyper-V
返回 IP/MAC 个地址对于具有多个 IP/MAC 地址的 VM,我得到重复的 VM 名称,IE,如果 VM 有 2 个 IP/MAC 我得到 2 个相同的 VM 名称,如果它有 3 个 [=26] =] 然后得到 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