Powershell-从集合中删除重复项

问题描述 投票:1回答:1

我正在从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
powershell hyper-v
1个回答
1
投票

我很傻

而不是

 $virtm=($out.VMName | ForEach-Object {

    $_ | Get-Unique

    }) 

只需要$virtm=$out.VMName | Get-Unique

© www.soinside.com 2019 - 2024. All rights reserved.