2016-06-28 5 views
0

Я создал виртуальную машину и хочу экспортировать ее свойства в CSV-файл.
то, что я пробовал, не дает мне IPAddress, SwitchName, Macaddress.Powershell: Получить свойства VM

$Data = @(); 
$VMs = Get-VM $VMName; 
foreach($VM in $VMs){ 
$VMCustom = New-Object System.Object; 
$VMCustom | Add-Member -Type NoteProperty -Name VMName -Value $VM.VMName; 
# Get-VMNetworkAdapter -VMName $VMName | Select -expand IPAddresses 
$VMCustom | Add-Member -Type NoteProperty -Name IPAddress -Value $VM.guest.IPAddresses; 
$VMCustom | Add-Member -Type NoteProperty -Name SwitchName -Value $VM.MacAddress; 
$VMCustom | Add-Member -Type NoteProperty -Name Status -Value $VM.State; 
$VMCustom | Add-Member -Type NoteProperty -Name Generation -Value $VM.Generation; 
$VMCustom | Add-Member -Type NoteProperty -Name SwitchName -Value $VM.SwitchName; 

$Data += $VMCustom; 
} 

$Data | Export-CSV "C:\VM.csv" -Delimiter ";"; 

Вопрос: Является ли Ipaddress, то IPaddress ВМ или IPaddress в Hyper-V?

Было бы здорово, если бы кто-то мог мне помочь.

+0

на VMware, IPAddress является массив с адресами IPv4 и IPv6 - так что если это дело с HyperV, попробуйте '$ vm.Guest.IPAddress [0]' – Avshalom

+0

Ошибка: невозможно добавить индекс в NULL-массив! – frhling1

+0

Сделайте '$ VM.IPAddresses' и покажите нам результаты – Avshalom

ответ

0

Попробуйте это:

$Data = @() 

$VMs = "Server-001","Server-002","Server-003" 

foreach($VM in $VMs) 
{ 
    $VMInfo = Get-VM -Name $VM 
    $VMNetwork = $VMInfo | Get-VMNetworkAdapter 

    $VMCustom = New-Object System.Object 
    $VMCustom | Add-Member -Type NoteProperty -Name VMName -Value $VMInfo.VMName 
    $VMCustom | Add-Member -Type NoteProperty -Name Status -Value $VMInfo.Status 
    $VMCustom | Add-Member -Type NoteProperty -Name Generation -Value $VMInfo.Generation 

    $VMCustom | Add-Member -Type NoteProperty -Name IPAddress -Value $VMNetwork.IPAddresses[0] 
    $VMCustom | Add-Member -Type NoteProperty -Name MacAddress -Value $VMNetwork.MacAddress 
    $VMCustom | Add-Member -Type NoteProperty -Name SwitchName -Value $VMNetwork.SwitchName 

    $Data += $VMCustom 
} 

$Data | Export-CSV "C:\VM.csv" -Delimiter ";" -NoTypeInformation 
+0

Спасибо. Все работает, кроме IPaddress, который все еще пуст. имеет ли он какие-либо отношения, если IP статичен или динамичен? можно ли добавить столбец, чтобы проверить, является ли IP статическим или динамическим? – frhling1

+0

Если вы запустите это, вернет ли он что-нибудь? $ VMInfo = Get-VM -Name «Server-001»; $ VMNetwork = $ VMInfo | Get-VMNetworkAdapter; $ VMNetwork.IPAddresses – Oggew

+0

Это интересно. от вчера до Сегодня я ничего не изменил, но сегодня он показывает IP-адрес. Отлично. Благодарю. – frhling1

 Смежные вопросы

  • Нет связанных вопросов^_^