O PowerShell suporta totalmente o tratamento de arquivos XML.
Por exemplo, se pegarmos a primeira mensagem que você forneceu e apenas colá-la em um arquivo XML chamado settings.xml
na pasta "C: \ blah", você poderia obter o ID de cada configuração como tal:
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.setting.id
Que retorna:
Location2
Location2id
e
$myXML.settings.setting.value
retorna:
Barcelona, Spain
zmw:00000.1.08181
Se substituirmos o conteúdo do arquivo XML pela sinopse que você forneceu na sintaxe # 2:
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade
retorna:
0
Para ler crossfade
, altere-o (para 2) e salve de volta:
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade = 2
$myXML.Save("C:\blah\settings.xml")
Editar após comentários:
Para alterar os elementos XML em si (como no exemplo de Barcelona) é um pouco mais complicado, porque você está editando a estrutura XML em si, não os dados que ela contém.
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.ChildNodes.Item(0).value = "New York, USA"
$myXML.Save("C:\blah\settings.xml")
Para o exemplo "Skinsettings", tente algo como:
$myXML.settings.skinsettings.setting."#text" = "true"
Confira estes recursos: