location vcenter username password abc 10.1 X xxx def 10.2 Y yyy
一個 csv 檔案,其中的 location 列是一個位置,在該位置的 IP 串列示 vCenter 的 IP
。我需要生成所有主機的詳細資訊,并在最后的csv中把位置欄位作為第一個欄位添加,但無法做到這一點
示例
我需要生成所有主機的詳細資訊,并在最后的csv中把位置欄位作為第一個欄位添加。
例子
假設位置abc有一個有5臺主機的vcenter,位置def有一個有3臺主機的vcenter
輸出應該是這樣的
輸出應該是這樣的
地點名稱版本
位置名稱版本 abc h1 6.5 abc h2 6.5 abc h3 6.5 abc h4 6.5 abc h5 6.5 def Hxx 6.7 def hyy 6.7 def hzz 6.7
$inventory = Import-Csv -path path.csv
foreach($i in $inventory){ Connect-VIServer -Server $i.vcenter -User $i.username -Password $i.password Get-VMHost | Select-Object -Property Name, Version | Export-csv tempoutput.csv -NoTypeInformation -Append $ExistingCSV = Import-Csv -Path 'tempoutput.csv $ExistingCSV | Add-Member -MemberType NoteProperty -Name 'Location' -Value $i.location $ExistingCSV | Export-Csv final.csv -NoTypeInformation[br>]。 Disconnect-VIServer -Server $i.vcenter -Force -Confirm:$false }
但這并不奏效
uj5u.com熱心網友回復:如果你的記憶體可以容納所有的Get-VMHost資料,我將只向輸出的CSV寫一次。你可以利用計算的屬性來防止使用一個臨時的CSV檔案。
$inventory = Import-Csv -path path.csv
$output = foreach ($i in $inventory) {
$null = Connect-VIServer -Server $i.vcenter -User $i.username -Password$i.password
Get-VMHost | Select-Object -Property Name,Version,@{n='Location';e={$i.Location}}.
$null = Disconnect-VIServer -Server $i.vcenter -Force -Confirm:$false
}
$output | Export-Csv final.csv -NoType
如果您在CSV檔案中重復輸入相同的vCenter和憑證,可能值得考慮重新設計。如此多次連接和斷開對同一vCenter的連接可能是低效的。你可以利用Group-Object,只在vCenter服務器改變時連接和斷開與vCenter的連接。
$inventory = Import-Csv -path path. csv | Group-Object vcenter,username,password | Foreach-Object {
$vc = $_.Group[0] | Select-Object vcenter,username, password, location
$null = Connect-VIServer -Server $vc.vcenter -User $vc.username -Password $vc.password
Get-VMHost | Select-Object -Property Name,Version,@{n='Location';e={$vc.Location}}.
$null = Disconnect-VIServer -Server $vc.vcenter -Force -Confirm:$false $vc.vcenter
}
$inventory | Export-Csv final.csv -NoType
在你的嘗試中,你在每個回圈迭代程序中讀取$ExistingCSV中的整個臨時CSV。然后您將屬性Location添加到整個物件$ExistingCSV中,將其添加到$ExistingCSV串列中具有相同值的每個專案中。所以在回圈的最后,CSV的每一行都有一個Location值,與回圈中的最后一個專案相匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/309299.html
標籤:
下一篇:子行程不在變數中存盤輸出
