1

我正在尝试使用 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 日志文件的不同列中?

4

1 回答 1

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
于 2013-10-18T22:32:38.110 回答