Auteur de questions
Récuprer des caractres entre deux balises avec powershell

Discussion générale
-
Bonjour à tous
j'essaye de récupérer dans un fichier TXT, tous les noms (.....) qui sont entre <Groupe> et </Groupe>
<Groupe>........</Groupe>
<Groupe>........</Groupe>
<Groupe>........</Groupe>
<Groupe>........</Groupe>
<Groupe>........</Groupe>
J'ai essayé d'utiliser cette commande après avoir importer un fichier XML en TXT
Select-String -Path "C:\temp\test.txt" -Pattern "<Groupe>" -Context 0
Mais ça m'a renvoyé :
temp\test.txt:10: <Groupe>........</Groupe>
Et moi je veux récupérer que le nom (.....) qui est entre les deux balises
Merci pour votre aide
Toutes les réponses
-
Bonjour,
$doc = [xml]@' <xml> <Groupe>........</Groupe> <Groupe>........</Groupe> <Groupe>........</Groupe> <Groupe>........</Groupe> <Groupe>........</Groupe> </xml> '@ $doc.xml.Groupe
Claude Couderc Consultant IIS, SharePoint, Exchange http://coudr.com
-
Bonjour et Merci Claude de votre repense
excuser moi de mon ignorance, car je suis débutant sur powershell
j’ai essayé d’appliquer votre scripte dans mon environnement, on attaquant directement un fichier XML mais j’ai l’impression qu’il me manque quelque chose:
$ParameterFile = “C:\Users\Desktop\13,01 # MA\nk.xml”
param([String]$ParameterFile)
$xml = New-Object XML
$xml.Load($ParameterFile)
$xml.Groupe.Groupe
j’essaye de récupéré tous les noms (….) des groupes qui sont entre les deux balise
<groups>
<group>.....</group>
</groups>dans tous le fichier XML
Merci pour votre aide
bien cordialement,
-
La syntaxe dépend de la structure de votre fichier.
Dans votre dernier exemple, la syntaxe est :
$xml.groups.group
La syntaxe suit exactement l'organisation de votre fichier.
Si votre fichier XML, stocké dans $xml, a le contenu :
<fruits> <rouges> <baies>Myrtilles</baies> </rouges> </fruits>
la syntaxe est :
$xml.fruits.rouges.baies
ce qui donne
Myrtilles
Claude Couderc Consultant IIS, SharePoint, Exchange http://coudr.com
-
-
Salut a tous
Merci beaucoup a toi Claude et Bawilanemo
ça marche bien waw c'est super
[xml]$xml = Get-Content -path “C:\Users\Desktop\13,01 # MA\nk.xml”
$xml.LIENS.lot.PREREQ.GROUPES.Groupe
je partage un autre code, que j'ai pu récupérer et compléter qui fais la même chose
for ($i=0;$i -lt $( $xml.LIENS.lot.count);$i++){$xml.LIENS.lot[$i].PREREQ.GROUPES.Groupe}
Merci encore -
je suis encore désoler j'ai hante, j'ai encore besoin de vous, j'essaye de faire mon max mais l'expiatrice me trahie
J'essaye de comparer c'est groupes qui sont présent dans XML avec d'autre groupe qui sont dans une OU dans AD
j'ai essayer ce code la mais sa ne fonctionne pas
$group = Get-ADGroup -Filter * -SearchBase "OU=....,DC=....,DC=.....,DC=...." -Properties * | select name
[xml]$xml = Get-Content -path “C:\Users\Desktop\13,01 # MA\nk.xml”
$gro = $xml.LIENS.lot.PREREQ.GROUPES.Groupe
foreach ($gro in $group)
{
Compare-Object $gro $group(et récupéré tous les groupes qui sont dans les deux (XML et OU) et les exporter dans un fichier TXT ou CSV
}
Merci encore pour votre aide
-
Plusieurs choses
Pour comparer de manière efficace, c'est bien d'avoir deux objets ayants les même propriétés.
Donc, pour alimenter $group, fais comme ceci
$group = Get-ADGroup -Filter * -SearchBase "OU=....,DC=....,DC=.....,DC=...." -Properties * | select -expandproperty name
tu peux comparer la différence avec la commande
$group | gm
ensuite, tu créés une variable $gro, que tu veux ensuite utiliser dans un foreach, cela ne peux pas fonctionner.
Si vraiment tu devais faire un foreach (et ce n'est pas le cas ici), tu devrais utiliser une nouvelle variable que foreach alimenterait a chaque boucle.en résumé, cela ressemblerait à ceci:
$group = Get-ADGroup -Filter * -SearchBase "OU=....,DC=....,DC=.....,DC=...." -Properties * | select -expandproperty name [xml]$xml = Get-Content -path “C:\Users\Desktop\13,01 # MA\nk.xml” $gro = $xml.LIENS.lot.PREREQ.GROUPES.Groupe Compare-Object $gro $group
Ce qui te sortira la lise de comparaison complète à l'écran.
Pour avoir les groupes présents dans les deux listes:
Compare-Object $gro $group -ExcludeDifferent -IncludeEqual
Pour un export dans un fichier txt:
Compare-Object $gro $group -ExcludeDifferent -IncludeEqual | select -ExpandProperty InputObject | Out-File -FilePath .\results.txt -Encoding utf8
B. -
-
Bonjour Bawilanemo
je ne sais pas comment te remercier
ça marche bien surtout avec la commande
Compare-Object $gro $group -ExcludeDifferent -IncludeEqual
qui facilite vraiment le travail, maintenant la création et mette en relation les deux procureuses et terminer
il me reste le plus gros morceau c'est de vérifier que c'est groupes ont ou pas une relation avec une collection et application dans SCCM
je ne sais pas si vous avais les compétences pour ce la, mais en tout cas
Mille merci