使用 powershell 在 XML 文件中查找和替换

Find and replace in XML file with powershell

现在我正在使用 PowerShell Studio 2017 生成带有 GUI 的 XML 文件。这段代码将选中的项目收集在 CheckedListBox 中:

$Groups = $chklistGroups.CheckedItems | ForEach-Object {
    "<Group>$_</Group>`n`t`t`t`t"
}

其中一些复选框包含 &,这显然不能在 XML 文件中。有什么方法可以删除 & 并将其替换为这段代码中的适当 &amp; 吗?这个 XML 文件然后被传递到另一个脚本中,我试图用这个删除符号:

# check the xml file for & and replace them with &amp; so it doesn't crash - except it doesn't work so it's gonna crash
if ($NewUserXML.NewUser.ActiveDirectory.User.Groups.Group.Contains("&"))
{
    "$($NewUserXML.NewUser.ActiveDirectory.User.Groups.Group)".Replace('&','&amp;')
}

通常是在创建 XML 之前执行此操作更好,还是在将其放入脚本本身之后执行此操作?我的假设是最好在创建之前就完成它。如果是这样,是否可以在第一段代码中做到这一点?

您可以在 ForEach-Object:

内完成替换
$Groups = $chklistGroups.CheckedItems | ForEach-Object {
    "<Group>$($_.Replace('&','&amp;'))</Group>`n`t`t`t`t"
}