it-swarm-vi.tech

Có chuỗi "PowerShell" không chứa "cmdlet hoặc cú pháp không?

Trong PowerShell tôi đang đọc trong một tệp văn bản. Sau đó, tôi đang thực hiện một Foreach-Object trên tệp văn bản và chỉ quan tâm đến các dòng KHÔNG chứa các chuỗi nằm trong $arrayOfStringsNotInterestedIn.

Cú pháp cho việc này là gì?

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

Nếu $ ArrayofStringsNotInterestedIn là [mảng], bạn nên sử dụng -notcontains:

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

hoặc tốt hơn (IMO)

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

Bạn có thể sử dụng toán tử -notmatch để lấy các dòng không có các ký tự mà bạn quan tâm.

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

Để loại trừ các dòng có chứa bất kỳ chuỗi nào trong $ ArrayOfStringsNotInterestedIn, bạn nên sử dụng:

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

Mã do Chris đề xuất chỉ hoạt động nếu $ ArrayofStringsNotInterestedIn chứa các dòng đầy đủ bạn muốn loại trừ.

1
Bruno Gomes