Найти и заменить в XML-файле PowerShell
Сейчас я создаю XML-файл с графическим интерфейсом пользователя с помощью PowerShell Studio 2017. Этот фрагмент кода собирает проверенные элементы внутри CheckedListBox:
$Groups = $chklistGroups.CheckedItems | ForEach-Object {
"<Group>$_</Group>`n`t`t`t`t"
}
Некоторые из этих флажков содержат &
, который, очевидно, не может быть внутри XML-файла. Есть ли способ удалить &
и заменить его на соответствующий &
в этом фрагменте кода? Этот XML-файл затем передается в другой скрипт, где я попытался удалить амперсанды следующим образом:
# check the xml file for & and replace them with & 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('&','&')
}
Как правило, лучше сделать это до того, как XML будет создан, или после того, как он будет помещен в сам скрипт? Я предполагаю, что лучше сделать это до того, как он будет создан. Если это так, возможно ли сделать это в этом первом фрагменте кода?
1 ответ
Решение
Вы можете выполнить замену в вашем ForEach-Object
:
$Groups = $chklistGroups.CheckedItems | ForEach-Object {
"<Group>$($_.Replace('&','&'))</Group>`n`t`t`t`t"
}