簡體   English   中英

Powershell腳本,用於使用CSV文件作為參數來查找和替換XML文件中的值

[英]Powershell Script for finding and replacing values in an XML file using a CSV file as parameters

我創建了一個Powershell腳本,該腳本生成一個XML文件。 所有XML數據都在腳本內,無論需要重復什么項目,我都會根據CSV中的行數(減去標題)循環它們。

腳本的下一部分是我遇到的問題。 基於相同的CSV,我現在嘗試修改生成的XML文件並進行查找和替換。 我生成了需要從循環中替換的單詞,例如FName1,FName2,FName3,LName1,LName2,LName3。

我的問題是,每當我嘗試從CSV文件替換這些單詞時,除非我對FName1,FName2等進行硬編碼,否則什么也不會被替換。

這是我知道是不正確的代碼。...基本上,我希望它查找FName(1,2,3等)和LName(1,2,3等)的任何實例,並用$ _.FirstNames and $替換它_.FirstNames and $ _.LastNames。

$c = Import-Csv test.csv

Get-ChildItem test.xml | Foreach-Object {
  $xmldoc = (Get-Content test.xml | Out-String)
  $i = 0
  $c | Foreach-Object {
    $xmldoc = $xmldoc -replace 'FName' + $i++,$_.FirstNames `
    -replace 'LName' + $i,$_.LastNames
  }

  $xmldoc | Set-Content test.xml
}

這是test.xml文件的一部分

<ItemRef ItemID="FName1" Mandatory="No"/>
<ItemRef ItemID="FName2" Mandatory="No"/>
<ItemRef ItemID="FName3" Mandatory="No"/>
<ItemRef ItemID="LName1" Mandatory="No"/>
<ItemRef ItemID="LName2" Mandatory="No"/>
<ItemRef ItemID="LName3" Mandatory="No"/>

這是test.csv文件:

FirstNames,LastNames
John,Doe
Jane,Doe
Mike,Smith
Samantha,Fox

任何幫助將不勝感激!

謝謝,

納斯

為什么要在FNameLName之間增加計數器?
代替使用Get-Content讀取文件,請使用[IO.file]::ReadAllText() [IO.file]::ReadAllText()不會基於換行符將文件分成數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM