Кажется, что некоторая информация, которая вам нужна, выводится Get-VM
и теряется при выборе только свойства NetworkAdapters. Вот почему я изменил это ниже. теперь он перебирает виртуальную машину и выбирает свойство NetworkAdapters во время цикла.
Я также:
- Положите все в
PSCustomObject
прямой, так что нет необходимостиNew-Object
или[ordered]
- Поместите
$results
переменную передforeach
циклом - Добавлен
| ft -Autosize
в ваш файл,Write-Output
поэтому он форматирует его так, как вы хотите (если вы хотите использовать вывод скрипта далее в вашем скрипте, удалите его| ft -autosize
снова, это будет полезно только по косметическим причинам) - Уточняется
ClusterObject
в вашемGet-VM
- я не уверен, что так как я не работаю с кластерами, но я думаю, вы должны указать эту информацию, в противном случае он будет читать только местную ВМ, никогда с удаленным кластера. - Не было собственности для
OSStatus
. Я думаю, что вы имели в видуOperationalStatus
. Я изменил это на это.
Вот код
$clus = Read-Host 'Enter the Cluster Name' $Nodes = Get-clusternode -Cluster $clus $results = @() foreach($Node in $Nodes) { $VMs = Get-VM -ClusterObject $Node foreach($VM in $VMs) { $VMtmp = $VM | select -expand NetworkAdapters $results += [PSCustomObject]@{ 'NodeName' = $Node; 'VMName' = $VM.VMName; 'IPaddress' = $VMtmp.IPAddresses[0]; 'Status' = $VM.State; 'AdapterStatus' = $VMtmp.Status[0]; 'OSStatus' = $VM.OperationalStatus[0]; 'Uptime' = $VM.Uptime } } } Write-Output $results | ft -AutoSize