[英]powershell vmware powerCLI automatic script
我正在制作一个脚本,以在vmware的powershell(powerCLI)中运行。 我试图做一个自动报告导出到一个CSV文件,但我不知道如何解决几个问题。
我不知道如何导出它们的所有参数。
“虚拟机的工作位置”我可以在mashine中导出磁盘,但是我不知道如何导出文件夹的所有路径。
域/工作组
计算机名称当我尝试导出名称时,我会获得带有域名“ name.domainname.com”的名称(这很奇怪,因为我的VM不在域中,在工作组中存在) 名称是指OS内部的名称,而不是esxi ,因为我从中获得vm的esxi名称
$ name =(get-vm name_maschine |选择对象名称).name
或简单,当in loop参数是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}))
}
}
我添加了除域/工作组之外的其他参数。 为此,您需要为每个虚拟机执行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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.