filtern Sie die Ausgänge mithilfe von Auswahlstrings

3410
JL Peyret

Wenn ich in bash folgendes mache, bekomme ich alle Umgebungsvariablen mit wd.

env | grep "wd" 

Jetzt in Powershell weiß ich, dass ich es könnte

get-childitem env:wd* 

Aber ich möchte als generischeren Ansatz an select-string pfeifen, um zu filtern, was von seiner Pipe kommt, egal was sich links von der Pipe befindet. Genau wie bei grep.

Das filtert nichts, ich bekomme alle Umgebungsvariablen.

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

Und das bringt mir nichts:

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

Ich weiß, dass ich Folgendes verwenden könnte, und es ist tatsächlich eine bessere Übereinstimmung, wenn ich nur nach dem Namen der Umgebungsvariablen filtern würde. Aber was ist, wenn ich einen schnellen und schmutzigen Filter a la grep möchte? Und vor allem, ohne zu wissen, was aus der Leitung kommt.

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

Dh gibt es ein Powershelll-Äquivalent zu grep, das in einem Pipe-Kontext verwendet werden kann, nicht nur im Zusammenhang mit Dateisuchen, was gut zu sein select-stringscheint.

6
"Out-String-Stream" PetSerAl vor 7 Jahren 0
`get-childitem env: | Out-String-Stream | select-string -Pattern wd war genau das richtige Ticket. ** Thx! ** Ich weiß nicht, ob es dich interessiert, aber ich werde es definitiv akzeptieren, wenn du es als Antwort postest. JL Peyret vor 7 Jahren 0

1 Antwort auf die Frage

6
PetSerAl

Standardmäßig Out-Stringerzeugen Sie ein einzelnes Zeichenkettenobjekt, das die gesamte Ausgabe enthält. Mit dem folgenden Filter werden alle Ausgaben als Ganzes ausgewählt oder verworfen. Sie müssen den -StreamParameter des Out-StringCmdlets verwenden, um für jede Ausgabezeile ein separates Zeichenfolgenobjekt zu erstellen.