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
            }
    }

このコードを実行してもエラーは発生しませんが、実行するたびに、OS ではなくサーバーの名前しか取得できません。また、作成しているcsvログのサーバーの名前とは異なる列にOSを表示するために何をする必要があるのか​​ わかりません。

各仮想マシンの OS バージョンを取得し、それを csv ログ ファイルの別の列に出力するには、コードで何を変更する必要がありますか?

4

1 に答える 1

1

get-vmguest は VMGuest オブジェクトを返します。ここに文書化されています: http://www.vmware.com/support/developer/PowerCLI/PowerCLI51/html/VMGuest.html。ドキュメントはまばらですが、OSFullName フィールドで OS のバージョンがわかると思います。したがって、書き込み出力行を次のように変更できます

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

そして、あなたは正しい軌道に乗っているでしょう。出力のカンマは、出力を「カンマ区切り値」にするものです。CSV ファイルには、必要に応じてヘッダーを含めることができます。(詳細については、Import-CSV / Export-CSV のヘルプを参照してください)。そのため、スクリプトの 2 行目に次の行を追加するとよいでしょう。

add-content $log "VM Name, OS Name"  # add CSV header line
于 2013-10-18T22:32:38.110 に答える