-1

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

 <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);

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

4

1 回答 1

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 文件更改,您需要调用Save()xml 文档对象。

于 2013-08-26T17:02:42.037 回答