我有一个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>
任何帮助将不胜感激。
谢谢
答案 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文档保存到文件中。