我想通过使用正则表达式脚本函数来更新这两个字段(客户端和环境)
<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);
但它没有更新..我需要帮助
答案 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()
。