使用PowerShell替换特定字段

时间:2013-08-26 16:21:21

标签: regex powershell powershell-v2.0 powershell-v3.0

我想通过使用正则表达式脚本函数来更新这两个字段(客户端和环境)

 <authentication mode="Forms">
  <forms name="AIR.client.environment.value" loginUrl="Login.aspx" protection="All" timeout="30" />
</authentication>

我有的功能

$regex_clientname = new-object System.Text.RegularExpressions.Regex("client=.*", [System.Text.RegularExpressions.RegexOptions]::IgnoreCase);
$regex_enviorenment = new-object System.Text.RegularExpressions.Regex("environment=.*", [System.Text.RegularExpressions.RegexOptions]::IgnoreCase);

$root.SelectSingleNode("//authentication/forms/@name")."#text"=$regex_enviorenment.Replace($regex_clientname.Replace($root.SelectSingleNode("//authentication/forms/@name")."#text", $CLIENT),$ENV);

但它没有更新..我需要帮助

1 个答案:

答案 0 :(得分:0)

嗯,不确定你在XML中阅读的方式,但试试这个:

$nodes = $root | Select-Xml '//authentication/forms/@name'
$nodes | Foreach { $_.Node.Value = ($_.Node.Value -replace '(.*?)client(.*)',"`$1${CLIENT}`$2") -replace '(.*?)environment(.*)',"`$1${ENV}`$2"}
$root.Save('path')

请注意,要保留XML文件更改,您需要在xml文档对象上调用Save()