2009-01-16 8 views
2

Supposons que j'ai un grand nombre de chaînes comme quelque chose en forme:Comment transformer efficacement une série de chaînes en PowerShell?

<tag>blah blahXXXXXblah blah</tag> 

Je veux transformer ces cordes en quelque chose comme:

blah blahZZZZZblah blah 

sur une ligne de commande PowerShell. Toutes les instances de XXXXX sont remplacées par ZZZZZ dans la transformation et les balises externes sont supprimées. Ce n'est pas du XML bien formé.

Je peux écrire un script qui permettrait d'évaluer cela assez facilement, je crois, mais en traitant ce logiciel particulier, je me retrouve à effectuer des tâches comme celle-ci plus souvent que je le voudrais. Je suis intéressé à apprendre comment le faire directement à partir de la ligne de commande powershell sans l'étape supplémentaire d'écrire un script .ps1 à exécuter.

Il semble que quelque chose de puissant serait bon, je ne sais pas comment. :)

Répondre

3

Eh bien la façon la plus simple que je peux penser (en supposant que votre liste est tenue à $ foo):

$foo | %{$_.Replace("XXXXX", "ZZZZZ")} 
+0

Oups ... je n'ai pas vu que vous vouliez supprimer les tags aussi, mais ce serait similaire. – EBGreen

+0

Dans ce cas, un remplacement par une chaîne vide serait suffisant pour retirer les étiquettes. Je pense que la construction% {} est ce que je cherchais, merci! Est-ce essentiellement un objet foreach dans la structure $ foo? –

+1

yup. C'est en réalité un alias pour le commandlet ForEach-Object qui n'est pas exactement la même chose qu'une boucle foreach brute, mais assez proche. Le commandlet Get-Alias ​​est pratique pour déterminer quelles sont les choses lorsque les gens publient des exemples de lignes de commande. – EBGreen

0

si vous pouvez écrire le script il suffit de créer une applet de commande

MSDN docs on Cmdlet creation

+0

Je demande explicitement comment le faire sur la ligne de commande sans écrire quelque chose de séparé. –

Questions connexes