我是PowerShell或任何腳本方面的新手。
我這里有一個DataResources(CSV檔案),它包含了一堆需要插入到Results.CSV中的資料
。這是我的DataResources
。對于我的Result.cV檔案,我們需要插入一些資料。
對于我的Result.csv看起來是這樣的。
我的目標是要匯出我的結果.csv。
我的目標是以results.csv為模板,匯出一個新的csv檔案。 如果一個HostName/Host匹配的資料包含一個相當于UA和PWD的值,將從ExportResources CSV檔案插入/更新到匯出的新CSV檔案
在執行我所創建的腳本之后,它只修改了1行,而不是全部。這是我目前所做的。
$DataSource = Import-Csv -Path D:codingPowershellcsvResourcesExportResources.csv
$DataResults = Import-Csv -Path D:codingPowershellcsvResult
csv。
foreach ($ItemDataResults in $DataResults)
{
$HostName = $ItemDataResults.HostName
$UA = $ItemDataResults.UA
$PASSWD = $ItemDataResults.PWD
}
$ItemDataSource = $DataSource | ? {$_.Host -eq $HostName}。
if ($UA -eq ""/span> - and $PASSWD -eq "")
{
$ItemDataResults.UA = $ItemDataSource.UA
$ItemDataResults.PWD = $ItemDataSource.Passwd
}
$DataResults | Export-Csv D:codingPowershellcsvnew.csv -NoTypeInformation
結果幾乎符合我的期望,但這里的問題是,它只填了一個主機名,其余的都是空的。
uj5u.com熱心網友回復:
你的腳本的問題是,你在$DataResults中回圈了一次,但如果你使用你所采用的方法,你必須為$DataSource中的每一個專案迭代一次。我相信一個更好的方法是從一個CSV中創建一個hashtable,使用主機名稱作為鍵,整個物件作為值,然后在第二個陣列中回圈,更新每個主機的值。這看起來就像這樣:
$DataSource = Import-Csv -Path D:codingPowershellcsvResourcesExportResources.csv
$DataResults = Import-Csv -Path D:codingPowershellcsvResult
csv。
$DataHT = @{}。
$DataResults | ForEach-Object { $DataHT. Add($_.HostName,$_) }
ForEach( $Record in $DataSource ) {
$DataHT[$Record.Host] .UA = $Record.UA
$ItemDataResults.PWD = $Record.Passwd
}
$DataHT.Values | Export-Csv D:codingPowershellcsvnew.csv -NoTypeInformation
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/309288.html
標籤:



