2 votes

Récupérer des données entre des commentaires XML avec powershell

Je veux pouvoir identifier (et remplacer) les éléments XML entre les commentaires XML. Par exemple

<!-- between here -->
<add key="userdefined1" value="something1" />
<add key="userdefined2" value="something2" />
<add key="userdefined3" value="something3" />
<!-- between here -->

La raison pour laquelle j'utilise des commentaires est qu'il s'agit du fichier web.config d'un projet Web .NET. La raison pour laquelle je n'utilise pas de sections de configuration personnalisées est que l'application est vieille de plusieurs années et qu'il y a des milliers de références existantes à ces clés, donc changer la façon dont on y accède pourrait être un problème.

1voto

Mat M Points 699

Ce n'est peut-être pas optimal, mais cela fonctionne. Vous avez deux constantes ici, la chaîne et le nom de fichier.

$comment = '<!-- between here -->'
$start = $false
ForEach ($l in (Get-Content .\testfile.config)) { 
        if (-not $start -and $l -notmatch $comment) {continue}
        if (-not $start -and $l -match $comment ) { $start = $True }
        elseif ($start -and  $l -notmatch $comment) { echo $l }
        elseif ($start -and  $l -match $comment) { break }
}

Comme alternative :

$comment = '<!-- between here -->'
$file = '.\testfile.config'
Select-String -pattern $comment -path $file | % { if (-not $b) { $b=$_.LineNumber} else { $e=$_.LinenUmber-2}}
Get-Content $file | Select-Object -Index ($b..$e)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X