Получите виртуальное оборудование SCSI на серверах с помощью Powershell

Я пытаюсь использовать Powershell, чтобы получить оборудование SCSI с нескольких виртуальных серверов и получить операционную систему каждого конкретного сервера. Мне удалось получить определенное оборудование SCSI, которое я хочу найти с помощью своего кода, однако я не могу понять, как правильно получить операционную систему каждого из серверов. Кроме того, я пытаюсь отправить все данные, которые я нахожу, в файл журнала csv, однако я не уверен, как вы можете заставить скрипт powershell создавать несколько столбцов.

Вот мой код (почти работает, но что-то не так):

$log = "C:\Users\me\Documents\Scripts\ScsiLog.csv"
Get-VM | Foreach-Object {
    $vm = $_
        Get-ScsiController -VM $vm | Where-Object { $_.Type -eq "VirtualBusLogic" } | Foreach-Object {
            get-VMGuest -VM $vm } | Foreach-Object{
        Write-output $vm.Guest.VmName  >> $log
            }
    }

Я не получаю никаких ошибок, когда запускаю этот код, однако всякий раз, когда я его запускаю, я получаю только имя серверов, а не ОС. Также я не уверен, что мне нужно сделать, чтобы ОС отображалась в другом столбце от имени сервера в журнале csv, который я создаю.

Что мне нужно изменить в моем коде, чтобы получить версию ОС каждой виртуальной машины и вывести ее в другом столбце моего файла журнала csv?


person Valrok    schedule 18.10.2013    source источник


Ответы (1)


get-vmguest возвращает объект VMGuest. Документировано здесь: http://www.vmware.com/support/developer/PowerCLI/PowerCLI51/html/VMGuest.html. Документация скудна, но я предполагаю, что поле OSFullName даст вам версию ОС. Таким образом, вы можете изменить строку вывода записи на

add-content $log "$($vm.guest.vmname) , $($vmguest.guest.OSFullName)"

и ты будешь на правильном пути. Запятая в выводе - это то, что делает вывод "значения, разделенные запятыми". Файл CSV может дополнительно иметь заголовок. (Подробности см. в справке Import-CSV/Export-CSV). Поэтому вы можете добавить следующее в качестве второй строки вашего скрипта:

add-content $log "VM Name, OS Name"  # add CSV header line
person Χpẘ    schedule 18.10.2013