J'aimerais savoir s'il est possible de modifier/créer des valeurs dans des fichiers XML avec PowerShell. Fondamentalement, je suis intéressé par:
Syntaxe 1:
<settings> <setting id = "Location2" value = "Barcelone, Espagne" /> <setting id = "Location2id" value = "zmw: 00000.1.08181" /> </settings>
Syntaxe 2:
<paramètres> <musicplayer> <crossfade> 0 </ crossfade> <queuebydefault> false </ queuebydefault> </ musicplayer > </ settings>
Syntaxe 3:
<settings> <skinsettings> <setting type = "bool" name = "skin.confluence.HomepageHideRecentlyAddedVideo"> false </ setting> </ skinsettings> </ settings>
Toute aide serait très appréciée.
Merci.
PowerShell prend totalement en charge le traitement des fichiers XML.
Par exemple, si nous prenons le premier texte de présentation que vous avez fourni et collez-le simplement dans un fichier XML nommé settings.xml
dans le dossier "C:\blah", vous pouvez obtenir l'ID de chaque paramètre en tant que tel:
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.setting.id
Qui retourne:
Location2
Location2id
Et
$myXML.settings.setting.value
résultats:
Barcelona, Spain
zmw:00000.1.08181
Si nous remplaçons le contenu du fichier XML par le texte de présentation que vous avez fourni dans la syntaxe n ° 2:
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade
résultats:
0
Pour lire crossfade
, remplacez-le (par 2) et sauvegardez:
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade = 2
$myXML.Save("C:\blah\settings.xml")
Modifier après les commentaires:
Changer les éléments XML eux-mêmes (comme dans l'exemple de Barcelone) est un peu plus délicat, car vous éditez la structure XML elle-même, pas les données qu'elle contient.
[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.ChildNodes.Item(0).value = "New York, USA"
$myXML.Save("C:\blah\settings.xml")
Pour l'exemple Skinsettings, essayez quelque chose comme:
$myXML.settings.skinsettings.setting."#text" = "true"
Découvrez ces ressources: