powershell vmware powerCLI自动脚本

时间:2014-04-24 13:27:10

标签: powershell vmware esxi powercli

我正在使用PowerShell(powerCLI)运行vmware脚本。我尝试将自动报告导出到csv文件,但我不知道如何解决几个问题。

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

  1. "虚拟机工作地点" 我可以将磁盘导出到mashine,但我不知道如何使用文件夹导出所有路径。

  2. 域/工作组

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

  4.   

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

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

    不太重要的参数

    4。主机工作的vcenter的名称

    1. 主机正在运行的数据中心的名称
    2. 代码:

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

1 个答案:

答案 0 :(得分: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
    }
}