У меня есть виртуальная машина с несколькими IP / MA C адресами
Я использую этот код для получения нескольких IP / MA C адресов:
$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
$ip=$out.IPAddresses
if ($ip.Count -gt 1){
foreach($i in $ip.Count) {
if ($ip -match ':'){
$ip = $ip | ?{$_ -notmatch ':'}
}
}
$ip = $ip -join " "
$virtm = ($virtm -split '\n')[0]
}
else {
$ip=$out.IPAddresses
}
$mac=$out.MacAddress
if ($mac.count -gt 1) {
$mac = $mac -join " "
}
foreach($m in $mac) {
$mac=$m.Insert(2,":").Insert(5,":").Insert(8,":").Insert(11,":").Insert(14,":")
}
Write-Output "$virtm, $ip, $mac"
Этот код работает очень хорошо, ожидайте, что он может добавить столбцы только к первому MA C address
Текущий вывод:
OAP80, 192.168.87.45 192.168.1.45, 00:15:5D:58:12:5E 00155D58125F
Я хочу добавить столбцы ко всем другим MA C адресов для конкретной ВМ
Желаемый вывод
OAP80, 192.168.87.45 192.168.1.45, 00:15:5D:58:12:5E 00:15:5D:58:12:5F
Я пытался добавить :
перед преобразованием коллекции в строку
$mac=$out.MacAddress
$mac=$mac.Insert(2,":").Insert(5,":").Insert(8,":").Insert(11,":").Insert(14,":")
Но получаю:
Exception calling "Insert" with "2" argument(s): "Collection was of a fixed size."
At line:35 char:6
+ $mac=$mac.Insert(2,":").Insert(5,":").Insert(8,":").Insert(11,":").Insert(1 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException