Найти и заменить в XML-файле PowerShell

Сейчас я создаю XML-файл с графическим интерфейсом пользователя с помощью PowerShell Studio 2017. Этот фрагмент кода собирает проверенные элементы внутри 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 будет создан, или после того, как он будет помещен в сам скрипт? Я предполагаю, что лучше сделать это до того, как он будет создан. Если это так, возможно ли сделать это в этом первом фрагменте кода?

1 ответ

Решение

Вы можете выполнить замену в вашем ForEach-Object:

$Groups = $chklistGroups.CheckedItems | ForEach-Object {
    "<Group>$($_.Replace('&','&amp;'))</Group>`n`t`t`t`t"
}
Другие вопросы по тегам