【问题标题】:powershell vmware powerCLI automatic scriptpowershell vmware powerCLI 自动脚本
【发布时间】:2014-06-09 19:43:19
【问题描述】:

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

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

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

  2. 域/工作组

  3. 计算机名称 当我尝试导出一个名称时,我得到了域“name.domainname.com”的名称(这很奇怪,因为我的虚拟机不在域中,但在工作组中) name 我的意思是操作系统内部的一个名称,而不是 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}))
    }
}

【问题讨论】:

  • 写一些代码,把它贴在这里,SO 的好人会帮助你修复有问题的地方。否则只是懒惰
  • 抱歉,由于stackoverflow“限制”,我无法粘贴所有代码
  • connect-viserver -server IP-ADDRES -user root -password PASSWORD Get-View -ViewType VirtualMachine | %{ New-Object PSObject -Property @{ # mashine name 'Mashine name' = $_.Name #date when editing '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}))
  • 刚刚注意到我错过了答案中的 datacenter,现在添加。

标签: powershell vmware esxi powercli


【解决方案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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多