У меня есть этот XML-файл, который мне нужно отредактировать.
<?xml version="1.0"?>
<rdwastr:strings xmlns:rdwastr="urn:microsoft.com:rdwastrings">
<string id="PageTitle">RD Web Access</string>
<string id="NoScriptWarning">
<p id="NoScript1">RD Web Access requires JScript. This Web browser either does not support JScript, or scripts are being blocked.</p>
<br/>
<br/>
<p id="NoScript2">To find out whether your browser supports JScript, or to allow scripts, see the browser's online Help.</p>
</string>
<string id="HeadingRDWA">RD Web Access</string>
<string id="HeadingApplicationName">RemoteApp and Desktop Connection</string>
.
.
.
<string id="PrivateComputer">I am using a private computer that complies with my organization's security policy.</string>
<string id="MoreInformation">More information...</string>
<string id="PrivateMore">By selecting this option you can save your credentials so that they can be used in the future when connecting to these programs. Before you select this option, please ensure that saving your credentials is in compliance with your organization's security policy.</string>
<string id="HideMore">Hide additional information...</string>
</rdwastr:strings>
В Интернете есть несколько примеров, но я пока не получил результата, вот что я пробовал в последнюю очередь. Видимо точка с запятой может быть проблемой.
$xml = [xml](Get-Content \\$client.xyz.com\C$\Windows\Web\RDWeb\Pages\en-US\RDWAStrings.xml)
$node = $xml."rdwastr:strings".string | where {$_.id -eq 'HeadingApplicationName'}
Write-Host $node
$node.Value = "whatever"
Write-Host ничего не возвращает, поэтому я предполагаю, что предыдущий оператор ничего не возвращает и назначает его узлу. Как мне решить эту проблему?
Мой опыт игры с XML ограничен, мягко говоря, но как насчет чего-то вроде:
$node = $xml.strings.string | where { $_.id -eq "HeadingApplicationName" }
Write-Host $node.'#text'
$node.'#text' = "whatever"
Казалось, работает в моем ограниченном тестировании ...