it-swarm-pt.tech

Existe uma string "PowerShell" que não contém "cmdlet ou sintaxe?

No PowerShell, estou lendo um arquivo de texto. Estou então fazendo um Foreach-Object sobre o arquivo de texto e só estou interessado nas linhas que NÃO contêm seqüências de caracteres que estão em $arrayOfStringsNotInterestedIn.

Qual é a sintaxe para isso?

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

Se $ arrayofStringsNotInterestedIn for um [array], você deve usar -notcontains:

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

ou melhor (IMO)

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

Você pode usar o operador -notmatch para obter as linhas que não possuem os caracteres nos quais você está interessado.

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

Para excluir as linhas que contêm qualquer uma das cadeias de caracteres em $ arrayOfStringsNotInterestedIn, você deve usar:

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

O código proposto por Chris só funciona se $ arrayofStringsNotInterestedIn contiver as linhas completas que você deseja excluir.

1
Bruno Gomes