Попытка изменить значения в файле XML с помощью Powershell - PullRequest
0 голосов
/ 07 мая 2019

У меня есть файл XML, который мне нужно программно изменить с помощью Powershell.Я искал по всему сайту и в Google, и ни один из найденных ответов не сработал.

XML выглядит следующим образом:

<Terminal>
    <ID>13</ID>
    <TerminalType>0</TerminalType>
    <Name>T13 TA BAR     </Name>
    <StoreID>1</StoreID>
    <IPAddress>10.10.10.101</IPAddress>
    <SubnetMask>255.255.255.0</SubnetMask>
    <DHCP>false</DHCP>
    <Workgroup>*NONE</Workgroup>
    <CreateBootDrvShare>true</CreateBootDrvShare>
    <TimeZone>Eastern Standard Time</TimeZone>
    <DaylightSavings>true</DaylightSavings>
    <TerminalReload>true</TerminalReload>  
    <NumTerms>-1</NumTerms>
    <Status>1</Status>
    <EnableVNC>false</EnableVNC>
    <StandaloneInterfaceServer>false</StandaloneInterfaceServer>
    <AKTerminalPrefix>-1</AKTerminalPrefix>
    <AKUseTouch>false</AKUseTouch>
</Terminal>

В документе XML будет несколько таких блоков, по одному для каждого используемого «компьютера».Мне нужно иметь возможность изменить IP-адрес на основе идентификатора терминала.Как мне поступить по этому поводу?

Я попробовал следующее, которое не сработало:

$xml = [xml](Get-Content $file)
$xml.SelectNodes("//Terminal")

Также:

$xml.Terminal | Where-Object {$_.Terminal.ID -eq '1' } | Select-Object IPAddress

Которое также не сработало.

Если, скажем, идентификатор «компьютера» равен 5, я хочу, чтобы IP-адрес был:

<IPAddress>10.10.10.105</IPAddress>

Любая помощь будет принята.

Спасибо

1 Ответ

2 голосов
/ 07 мая 2019

Один из ваших примеров действительно близок к работе. Вы можете просто сделать следующее:

$XMLOutputFile = "Path\file.xml"
$xml = [xml](Get-Content $file)    
($xml.Terminal | Where-Object {$_.ID -eq '5' }).IPAddress = '10.10.10.105'
$xml.Save($XMLOutputFile)

Если у вас есть объект XML (в данном случае используется ускоритель типа [xml]), вы можете просто обновить свойства, используя синтаксис $object.property = value. Тогда все, что осталось, - это обработать вывод. .Save() сохраняет документ XML в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...