Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-使用CSV作为替换操作的查找_Csv_Powershell_Lookup - Fatal编程技术网

Powershell-使用CSV作为替换操作的查找

Powershell-使用CSV作为替换操作的查找,csv,powershell,lookup,Csv,Powershell,Lookup,我有一个现有的脚本,它读取源文件并用新字符替换某些字符。所以它几乎是硬编码的 (Get-Content $path\$xml_out) | Foreach-Object {$_ -replace '<ContactCode>PROP</ContactCode>','<ContactCode>OFFICE</ContactCode>'} | set-content $path\$xml_out 这是我正在替换的原始文件 CAREHOME PROP

我有一个现有的脚本,它读取源文件并用新字符替换某些字符。所以它几乎是硬编码的

(Get-Content $path\$xml_out) | Foreach-Object {$_ -replace '<ContactCode>PROP</ContactCode>','<ContactCode>OFFICE</ContactCode>'}  | set-content $path\$xml_out
这是我正在替换的原始文件

CAREHOME
PROP
MAIN
DAY
TELE
BUSINESS
我正在使用importcsv,但尝试使用ForEach循环,其中包含Get内容

$testcsv = import-csv $path\mapping.csv
ForEach ($row in $testcsv)
{
    $field1 = $row.ORGIGINAL_CODE
    $field2 = $row.NEW_CODE
    Echo "$field1 maps to $field2"
    echo "$xml_out"
    (Get-Content $path\$xml_out) | Foreach-Object  {$_ -replace '$field1','$field2'}  | set-content $path\$xml_out
}
因此,它不是在源文件中将field1替换为field2,而是将我的代码

$_ -replace $field1,$field2
$_ -replace $field1,$field2
$_ -replace $field1,$field2
$_ -replace $field1,$field2
$_ -replace $field1,$field2
$_ -replace $field1,$field2
$_ -replace $field1,$field2
我希望最后能和你在一起

OFFICE
EMERG
OFFICE
OFFICE
TEL
OFFICE

我怀疑我没有正确地转义它。

我可能更容易在循环结束时处理数组和输出

$testcsv = Import-Csv $path\mapping.csv
$XmlIn = Get-Content  $path\Scripts\XML.txt
foreach ($row in $testcsv)
{
    $field1 = $row.ORGIGINAL_CODE
    $field2 = $row.NEW_CODE
    Write-Host "$field1 maps to $field2"
    $XmlIn = $XmlIn.Replace($field1,$field2)
}
$XmlIn | Out-File $path\XML.txt

请逐字向我们提供您提到的“投诉”。另外,请提供一个示例,因为上面代码段中的许多变量都不可见(
$CSV
$path
,等等)。我注意到,在最初的编辑中,您在
ForEach
循环中嵌套了一个脚本块,这将提供您看到的输出
Foreach对象{{$\替换'$field1','$field2'}}
。这就是我对问题原因的猜测——它只是用设置的内容将scriptblock写入文件。现在你已经在编辑中纠正了这个错误,我打赌你的代码不会再出现同样的问题了…?。替换部分对我不起作用,所以我不得不调整那行,现在它工作得很好$testcsv=Import Csv$path\mapping.Csv$XmlIn=Get Content$path\source.txt foreach($testcsv中的行){$field1=$row.ORIGINAL_CODE$field2=$row.NEW_CODE Write Host“$field1映射到$field2”$XmlIn=$XmlIn | foreach对象{$\替换$field1,$field2}$XmlIn Out File$path\source2.txt
$testcsv = Import-Csv $path\mapping.csv
$XmlIn = Get-Content  $path\Scripts\XML.txt
foreach ($row in $testcsv)
{
    $field1 = $row.ORGIGINAL_CODE
    $field2 = $row.NEW_CODE
    Write-Host "$field1 maps to $field2"
    $XmlIn = $XmlIn.Replace($field1,$field2)
}
$XmlIn | Out-File $path\XML.txt