Powershell - удаление дубликатов из коллекции - PullRequest
1 голос
/ 28 февраля 2020

Я возвращаю IP / MA C адреса из Hyper-V

для виртуальных машин с несколькими IP / MA C адресами. Я получаю дублированные имена виртуальных машин, IE, если виртуальная машина имеет 2 IP / MA C Я получаю 2 одинаковых имени виртуальной машины, если он имеет 3 IP / MA C, а затем получает 3 одинаковых имени виртуальной машины, 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

1 Ответ

1 голос
/ 28 февраля 2020

Я тупой

вместо

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

    $_ | Get-Unique

    }) 

просто надо было $virtm=$out.VMName | Get-Unique

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...