我有一个特殊格式的配置文本文件,其中有1行以wcfconfig,Text,<?xml version...
开头,我正在尝试使用PowerShell将整个XML块替换为从可执行文件返回的XML块。文本文件(例如:C:\ Temp \ MyText.txt)如下所示:
Special Export File
Format: 1
Configuration: MyConfig
startupcmd,Text,
extracmdline,Text,
wsdlport,Text,9500
useserverprinters,Int,1
aosencryption,Text,1
dbserver,Text,Dev-SERVER
wcfconfig,Text,<?xml version="1.0" encoding="utf-8"?><configuration>...
hint,Text,
使用服务器/端口调用时,我有一个可执行文件,并返回一个XML字符串。
C:\MyFile.exe Dev-SERVER 9500
Dev-Server
来自文本文件中的dbserver
,而9500
来自文本文件中的wsdlport
。
它返回一个格式为上面wcfconfig
的XML字符串,我只想在1行完全替换:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<client>
</client>
</configuration>
答案 0 :(得分:0)
由于我没有你的环境,我不得不假装一些东西。 C:\MyFile.exe Dev-SERVER 9500
的输出由here-string $return
$return = @"
<?xml version="1.1" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<client>
</client>
</configuration>
"@
(Get-Content "C:\Temp\MyText.txt") -replace '^(\s*?wcfconfig,Text,).*',"`$1$($replace -replace "`r`n")"
获取文件内容&#34; C:\ Temp \ MyText.txt&#34;并使用-replace
找到您要更新的行。将其替换为<?xml
之前的所有文本,然后在删除新行的情况下附加文件数据。
某些元素> <
之间会有空格。如果这是一个问题,则额外的-replace
应该处理这个问题。 -replace "\>\s+?\<","><"