我有一个文本文件,其中包含以下文字:
<ServerAddress>.</ServerAddress>
<ServerDatabase>test</ServerDatabase>
<ServerUsername>jimmy</ServerUsername>
我希望能够取代“。”使用read-host
输入的文本。
例如,将其从<ServerAddress>.</ServerAddress>
更改为
<ServerAddress>server1</ServerAddress>
我必须完成的代码......但是它会一遍又一遍地将文件中的所有内容替换为相同的字符串,因此在上面的示例中,它会用<ServerAddress>server1</ServerAddress>
替换所有内容
这是我到目前为止所做的:
pushd "C:\PSF\Move to V6\DTT Files"
$configFiles = Get-ChildItem . *.dtt -rec
$servername = Read-Host 'What the server name?'
$regex='(m?)>[^<]+<'
foreach ($file in $configFiles)
{
(Get-Content $file.PSPath) |
Foreach-Object { "<ServerAddress>.</ServerAddress>" -replace $regex, ">$servername<" } |
Set-Content $file.PSPath
}
答案 0 :(得分:0)
请勿使用正则表达式替换XML内容。而是将文件加载为XML,选择节点并设置值:
示例:
[xml]$xml =
@'
<root>
<ServerAddress>.</ServerAddress>
<ServerDatabase>test</ServerDatabase>
<ServerUsername>jimmy</ServerUsername>
</root>
'@
$xml.DocumentElement.ServerAddress = 'newServer'
$xml.Save('yourLocation')