filtrer les sorties à l'aide de pipes select-string

6

En bash, si je fais ce qui suit, j'aurai toutes les variables d'environnement wd.

env | grep "wd"

Maintenant, à Powershell, je sais que je pourrais faire

get-childitem env:wd*

Mais je veux utiliser pipe-select comme une approche plus générique, afin de filtrer ce qui sort de son tuyau, peu importe ce qui se trouve à gauche du tuyau. Juste comme grep.

Cela ne filtre rien, j'obtiens toutes les variables d'environnement.

get-childitem env: | out-string | select-string -Pattern wd

Et cela ne m'apporte rien:

get-childitem env: | select-string -Pattern "wd"

Je sais que je pourrais utiliser ce qui suit, et la correspondance est meilleure si je filtre uniquement sur le nom de la variable d'environnement. Mais que faire si je veux un filtre rapide et sale à la grep? Et surtout, sans connaître les attributs de ce qui sort du tuyau.

get-childitem env: | where-object {$_.Name -like "wd*"}

En d'autres termes, existe-t-il un équivalent Powershelll à grep utilisable dans un contexte de canal, et pas seulement dans le contexte de recherches de fichiers , qui select-stringsemble bien couvrir?

JL Peyret
la source
Out-String -Stream
PetSerAl
get-childitem env: | Out-String -Stream | select-string -Pattern wdétait juste le billet. THX! Je ne sais pas si cela vous intéresse, mais je l'accepterai définitivement si vous le publiez comme réponse.
JL Peyret

Réponses:

6

Par défaut, Out-Stringproduit un seul objet chaîne contenant toute la sortie. Le filtre suivant sélectionnera ou supprimera toute la sortie dans son ensemble. Vous devez utiliser le -Streamparamètre d' Out-Stringapplet de commande pour générer un objet chaîne distinct pour chaque ligne de sortie.

PetSerAl
la source
1

Même réponse, en tant que fonction et alias, on peut inclure dans son profil powershell:

function Find-Env-Variable (
           [Parameter(Mandatory = $true, Position=0)]
           [String]$Pattern){
    get-childitem ENV: | Out-String -Stream | select-string -Pattern "$Pattern"
}
Set-Alias findenv Find-Env-Variable
Liseron
la source