尝试使用Powershell更改XML文件中的值

时间:2019-05-07 19:51:45

标签: xml powershell

我有一个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文档中将有许多这样的块,每个“计算机”都使用一个。我需要能够根据终端的ID更改IP地址。我该怎么办?

我尝试了以下方法,但没有用:

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

也:

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

哪个也不起作用。

如果说“计算机”的ID为5,我希望IP地址为:

<IPAddress>10.10.10.105</IPAddress>

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:2)

您的一个例子确实很有效。您可以执行以下操作:

oldVideoName.flv

一旦有了XML对象(在这种情况下,使用corrected.flv类型的加速器),就可以使用$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文档保存到文件中。