En fait il faut être plus précis avec regex pour isoler le texte qui t'intéresse.
Exemple:
Nous avons ici une ligne avec du texte, suivi de ce qui nous intéresse, suivi de texte.
1 2
| $a = "ABC ID.t1234567 DEF"
$a -match 'ID\.t.{7}' | Out-Null; $matches[0] |
Le regex peut être interprété ainsi:
Lettres I et D suivies du point (\., qui veut dire littéralement un point, car '.' veut dire n'importe quel caractère) et d'un t. Ensuite n'importe quelle caractère('.'), sept fois {7}
Résultat:
ID.t1234567
Cool, maintenant, on va adapter tout ceci à ton code.
$resultat = Get-Content log.txt | Select-String "ID\.t.{7}" -casesensitive | foreach{$_.Matches.value}
Nous allons nous appuyer sur Select-String, mais travailler sur le résultat, et pour chaque élément nous allons chercher l'attribut matches et surtout sa valeur.
Le résultat sera un array avec toutes les instances recherchées:
ID.t1234567
Si tu ne veux que le contenu après ID.t, il faut aller un peu plus loin, on va utiliser une capture (entre parenthèse dans le regex), et aller cherche la valeur dans une propriété appelée groups:
$resultat = Get-Content log.txt | Select-String "ID\.t(.{7})" -casesensitive | foreach{$_.Matches.groups[1].value}
1234567
PS. Ceci est valable s'il n'y a qu'une instance de ce que tu recherches par ligne.
Partager