我正在尝试构建一个脚本,该脚本将从多个vSphere Server中提取VM列表。至此,它可以完成我想要的操作,但是不幸的是,它还在结果.csv文件中创建了重复的值。
仅注意serverlist.txt和vicredentials.xml包含相同的唯一服务器。
Import-Module VMware.VimAutomation.Core
Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Confirm:$false
if (Test-Path 'E:\vSphereScript\vCenterVMList.csv'){Remove-Item 'E:\vSphereScript\vCenterVMList.csv'}
$serverList = Get-Content -Path "E:\vSphereScript\serverlist.txt"
foreach ($server in $serverList) {
$creds = Get-VICredentialStoreItem -file "vSphereScript\vicredentials.xml" -Host $server
Connect-VIServer -server $creds.host -user $creds.user -password $creds.password
Get-VM | Select-Object Name, Guest, VMhost, ResourcePool | Export-Csv -Path "E:\ProgramData\vCenterVMList.csv" -NoTypeInformation -Append
Disconnect-VIServer $server -Confirm:$false
}
还有人知道为什么这么慢吗? 如果我直接从powershell连接到vm并使用Get-VM,那几乎是瞬时的
答案 0 :(得分:0)
我没有发现您的代码有任何根本上的错误,但确实有几件事要引起注意:
关于速度,Get-VM
很快。但是,与vCenter Server连接和断开连接并不是特别快速的操作。