it-swarm-eu.dev

Gibt es eine PowerShell-Zeichenfolge, die kein Cmdlet oder keine Syntax enthält?

In PowerShell lese ich eine Textdatei. Ich mache dann ein Foreach-Objekt über der Textdatei und interessiere mich nur für die Zeilen, die KEINE Zeichenketten enthalten, die in $arrayOfStringsNotInterestedIn.

Was ist die Syntax dafür?

   Get-Content $filename | Foreach-Object {$_}
27
Guy

Wenn $ arrayofStringsNotInterestedIn ein [array] ist, sollten Sie -notcontains verwenden:

Get-Content $FileName | foreach-object { `
   if ($arrayofStringsNotInterestedIn -notcontains $_) { $) }

oder besser (IMO)

Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}
42
Chris Bilson

Sie können den Operator -notmatch verwenden, um die Zeilen abzurufen, die nicht die Zeichen enthalten, an denen Sie interessiert sind.

     Get-Content $FileName | foreach-object { 
     if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) }
10
Mark Schill

Um die Zeilen auszuschließen, die Zeichenfolgen in $ arrayOfStringsNotInterestedIn enthalten, sollten Sie Folgendes verwenden:

(Get-Content $FileName) -notmatch [String]::Join('|',$arrayofStringsNotInterestedIn)

Der von Chris vorgeschlagene Code funktioniert nur, wenn $ arrayofStringsNotInterestedIn die vollständigen Zeilen enthält, die Sie ausschließen möchten.

1
Bruno Gomes