J'ai un psobject qui contient les valeurs suivantes 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
3 Réponses :
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'
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
La réponse de Yanncha est une réponse efficace si vos chaînes commencent toujours par 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 voir regex pour expliquer regex. P> 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 azreus / code> et finissent avec .MyDomain.com code>. Vous pouvez utiliser un seul -replace code> pour obtenir le résultat souhaité. 1 $ code> représente capture groupe 1, créé par le premier Parenthèses regroupant () code>. Il contient . * Code> contenu. Voir REGEX pour explication de regex. P>
/ code>. Ensuite, supprime le premier . Code> et tous les caractères après cela. P>
-replace code>. p> p>
Pouvez-vous nous montrer la sortie de
Get-Member -InputObject $ MPSObject code>?