1

我正在为 vmware 制作一个在 powershell (powerCLI) 中运行的脚本。我尝试将自动报告导出到 csv 文件,但我不知道如何解决几个问题。

我不知道如何导出它们的所有参数。

  1. “虚拟机工作位置”我可以导出 mashine 所在的磁盘,但我不知道如何导出所有带有文件夹的路径。

  2. 域/工作组

  3. 计算机名称当我尝试导出名称时,我得到的名称带有域“name.domainname.com”(这很奇怪,因为我的 VM 不在域中,但在工作组中) 名称我的意思是操作系统内部的名称,不在 esxi 中,因为我从这里得到了 vm 的 esxi 名称

$name = (get-vm name_maschine|select-object name).name

或者很简单,当循环参数是 mashine 的名称时,我只导出一个参数

不太重要的参数

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

我添加了除域/工作组之外的额外参数。要获得这一点,您需要为Invoke-VMScript每个 VM 执行(使用本地管理员凭据),并结合类似的东西(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 回答