我正在使用PowerShell(powerCLI)运行vmware脚本。我尝试将自动报告导出到csv文件,但我不知道如何解决几个问题。
我不知道如何导出它们的所有参数。
"虚拟机工作地点" 我可以将磁盘导出到mashine,但我不知道如何使用文件夹导出所有路径。
域/工作组
计算机名称 当我尝试导出一个名字时,我得到域名" name.domainname.com" (这很奇怪,因为我的VM不在域中,有工作组) 名称我的意思是操作系统内部的名称不在esxi中,因为我从这里得到的esm名称
$ name =(get-vm name_maschine | select-object name).name
或简单当循环参数是mashine的名称时,我只导出一个参数
不太重要的参数
4。主机工作的vcenter的名称
代码:
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}))
}
}
答案 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
}
}