0
votes

Je voulais obtenir le texte du milieu de psobject à PowerShell

J'ai un psobject qui contient les valeurs suivantes xxx pré>

J'ai besoin uniquement du nom VM stocké dans un nouvel objet PS, comment puis-je faire cela. P>

La liste doit retourner comme ci-dessous. P>

MYVM-0
MYVM-1


1 commentaires

Pouvez-vous nous montrer la sortie de Get-Member -InputObject $ MPSObject ?


3 Réponses :


1
votes

Un moyen simple peut être d'utiliser l'opérateur -REPLACE:

$list = @('AZREUS/MYVM-0.mydomain.com','AZREUS/MYVM-1.mydomain.com')
$list -replace 'AZREUS/'-replace '\.mydomain\.com'


0 commentaires

0
votes

ou en utilisant -match. Faites-les un à la fois.

'AZREUS/MYVM-0.mydomain.com' -match 'AZREUS/(.*).mydomain.com' > $null; $matches[1]

MYVM-0


'AZREUS/MYVM-1.mydomain.com' -match 'AZREUS/(.*).mydomain.com' > $null; $matches[1]

MYVM-1


0 commentaires

1
votes

La réponse de Yanncha est une réponse efficace si vos chaînes commencent toujours par azreus / et finissent avec .MyDomain.com . Vous pouvez utiliser un seul -replace pour obtenir le résultat souhaité. xxx

1 $ représente capture groupe 1, créé par le premier Parenthèses regroupant () . Il contient . * contenu. Voir REGEX pour explication de regex.


Prendre la même approche Plus encore de manière dynamique, vous pouvez utiliser la correspondance de motif. Cela supprime tous les caractères de départ, y compris le premier / . Ensuite, supprime le premier . et tous les caractères après cela. xxx

voir regex pour expliquer regex.


Notez que si vos articles d'objet ne sont pas des chaînes, ils devront être convertis en cordes ou vous devra faire cela vous-même avant d'appliquer -replace .


0 commentaires