Откройте и сохраните файл конфигурации xml с помощью powershell.

Я пытаюсь создать сценарий для изменения содержимого файла конфигурации, сохранения его и запуска соответствующей программы. Файл, по-видимому, представляет собой файл xml, и с помощью созданного мной сценария я сохраняю его в обычном текстовом файле. Это может быть причиной того, что моя программа больше не запускается. Итак, как я могу сохранить в xml?

Вот сценарий:

$content = [XML](Get-Content("path\file.config"))
$content = $content.replace("IP address","Other IP address")
$content | out-file "path\file.config"

заранее спасибо

Бен


person RazZ    schedule 14.07.2017    source источник
comment
Во-первых: Пожалуйста, не используйте регулярное выражение в xml. В вашем сценарии нет ничего явно неправильного. Не могли бы вы показать содержимое file.config   -  person Mathias R. Jessen    schedule 14.07.2017
comment
Привет, ребята, я использовал решение @ slong16, и оно сработало нормально. Спасибо   -  person RazZ    schedule 17.07.2017


Ответы (1)


Этот код не имеет смысла, так как он частично имеет дело с xml, а частично с текстом. Я попытался проиллюстрировать это комментариями ниже, и как вы можете решить эту проблему.

Пример ввода

<?xml version="1.0"?>
<mytag>IP address</mytag>

Разбивка

# this line imports the file, and turns it into an XML object. so far so good.
$content = [XML](Get-Content("path\file.config"))

# this line leads to an error:
# Method invocation failed because [System.Xml.XmlDocument] does not contain a method named 'replace'
$content = $content.replace("IP address","Other IP address")

# this line will try to export the xml object (unsuccessfully)
$content | out-file "path\file.config"

Подход 1 – обрабатывать как текст

$content = (Get-Content("path\file.config"))
$content = $content.replace("IP address","Other IP address")
$content | out-file "path\file.config"

Подход 2 — обрабатывать как xml

$content = [XML](Get-Content("path\file.config"))
$content = $content.mytag = "Other IP Address"
$content.OuterXml | out-file "path\file.config"
person G42    schedule 14.07.2017
comment
Привет, спасибо за вашу помощь, но мне не удалось заставить ее работать... Я новичок в PS, так что, возможно, это моя вина. Все равно спасибо =) - person RazZ; 17.07.2017