[英]Updating my csv file with data from XML in powershell
出於教育目的,我試圖通過XML工作表更新CSV文件。 更新我的CSV,其中客戶端等於nummer(不對其進行硬編碼)不起作用。 有人可以看到我在做什么嗎?
XML:
<wijzigen>
<klant nummer="4">
<stad>Troy</stad>
<provincie>TR</provincie>
<provincieVoluit>Troas</provincieVoluit>
<adres>happy horse street 27</adres>
<postcode>1200BC</postcode>
</klant>
<klant nummer="7">
<stad>Achaea</stad>
</klant>
</wijzigen>
電源外殼:
function Wijzig-Klant{
$klantnummer = $wijziging.nummer
$stad = $wijziging.stad
$provincie = $wijziging.provincie
$provincieVoluit = $wijziging.provincieVoluit
$adres = $wijziging.adres
$postcode = $wijziging.postcode
$data = Import-Csv -Path "C:\Projecten\PowerShell\Data_v1.0.csv" -Delimiter ";"
$update = $data | Where-Object {$_.klantnummer -eq $klantnummer} | ForEach-Object {
$_.stad = $stad
$_.provincie = $provincie
$_.provincieVoluit = $provincieVoluit
$_.adres = $adres
$_.postcode = $postcode
}
$update | Export-Csv ("C:\Projecten\PowerShell\" + $datumVandaag + "Data_v1.0.csv") -Delimiter ";" -NoTypeInformation -Append
}
閱讀Powershell中的XML文件以獲取數據:
$wijziging = $XMLDocument.klantadministratie.wijzigen.klant
[xml]$XMLDocument = Get-Content -Path 'C:\Projecten\PowerShell\XML Wijzigingen v1.0.xml'
我懷疑您的XML模式實際上是:
$xml = [xml]@'
<?xml version="1.0"?>
<klantadministratie>
<wijzigen>
<klant nummer="4">
<stad>Troy</stad>
<provincie>TR</provincie>
<provincieVoluit>Troas</provincieVoluit>
<adres>happy horse street 27</adres>
<postcode>1200BC</postcode>
</klant>
<klant nummer="7">
<stad>Achaea</stad>
</klant>
</wijzigen>
</klantadministratie>
'@
根據您的示例。 有了這些知識,您就需要進行null
檢查,因為並非所有值都已填充:
$path = 'C:\Projecten\PowerShell\Data_v1.0.csv'
Import-Csv -Path $path -Delimiter ';' | ForEach-Object {
$set = $xml.SelectSingleNode("//klant[@nummer='$($PSItem.klantnummer)']")
if ($set.stad) { $PSItem.stad = $set.stad }
if ($set.provincie) { $PSItem.provincie = $set.provincie }
if ($set.provincieVoluit) { $PSItem.provincieVoluit = $set.provincieVoluit }
if ($set.adres) { $PSItem.adres = $set.adres }
if ($set.postcode) { $PSItem.postcode = $set.postcode }
$PSItem # return the updated row to the pipeline
} | Export-Csv -Path "C:\Projecten\PowerShell\${datumVandaag}Data_v1.0.csv" -NoTypeInformation -Append
最后,我認為您的問題不是將對象返回到管道中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.