1

VMware用のpowershell(powerCLI)で実行するスクリプトを作成しています。csv ファイルにエクスポートされた自動レポートを実行しようとしていますが、いくつかの問題を解決する方法がわかりません。

それらをエクスポートする方法がわからないすべてのパラメーター。

  1. 「仮想マシンの作業場所」マシンであるディスクをエクスポートできますが、フォルダーを含むすべてのパスをエクスポートする方法がわかりません。

  2. ドメイン/ワークグループ

  3. コンピューターの名前名前をエクスポートしようとすると、ドメイン「name.domainname.com」の名前が表示されます(VMがドメインになく、ワークグループにあるため、これは奇妙です) 名前は、esxiではなくOS内の名前を意味します、vmのesxi名はこれから取得するため

$name = (get-vm name_maschine|選択オブジェクト名).name

またはループパラメータがマシーンの名前である場合、パラメータのみをエクスポートします

重要度の低いパラメータ

4 . ホストが動作している vCenter の名前

  1. ホストが稼働しているデータセンターの名前

コード:

connect-viserver -server IP-ADDRES -user root -password PASSWORD 
Get-View -ViewType VirtualMachine | %{ 
    New-Object PSObject -Property @{ 
    # mashine name 
    'Mashine name' = $_.Name 
    #date when edited 
    'Date' = Get-Date 
    # resource pull 
    'pull' = (Get-VM $_.Name | Get-ResourcePool | select-object name).name 
    #disk where is mashine 
    'Datastore' = [system.String]::Join(",",($_.Storage.PerDatastoreUsage | %{Get-View $_.Datastore} | %{$_.Name}))
    }
}
4

1 に答える 1

1

ドメイン/ワークグループ以外のパラメーターを追加しました。これを取得するには、各 VM ごとに (ローカル管理者の資格情報を使用して) 実行する必要がありInvoke-VMScript、次のようなものと組み合わせます。(Get-WmiObject Win32_ComputerSystem).Domain

$guestUser = "administrator"
$guestPass = "yourpass"
Get-View -ViewType VirtualMachine | %{ 
    New-Object PSObject -Property @{ 
    # machine name 
    'Machine name' = $_.Name
    # machine name from vmware tools
    'Guest name' = $_.Guest.HostName
    # machine name from WMI
    'Guest name(WMI)' = (Invoke-VMScript -VM $_.Name -GuestUser $guestUser -GuestPassword $guestPass -ScriptText {(Get-WmiObject Win32_ComputerSystem).Domain}).ScriptOutput
    #date when edited 
    'Date' = Get-Date 
    # resource pool 
    'pool' = (Get-VM $_.Name | Get-ResourcePool | select-object name).name 
    #disk where is mashine 
    'Datastore' = [system.String]::Join(",",($_.Storage.PerDatastoreUsage | %{Get-View $_.Datastore} | %{$_.Name}))
    # physical location
    'VM Location' = $_.Config.DataStoreURL.URL
    # vm host
    'VM Host' = (Get-VM $_.Name).VMHost
    # datacenter
    'Datacenter' = (Get-Datacenter -VM $_.Name).Name
    }
}
于 2014-04-24T14:37:17.780 に答える