Como normalmente acontece com o PowerShell - o que você vê não é (exatamente) o que você obtém. Os dados que você tenta verificar com Where-Object
são $_.Context.PostContext
.
Algo como o seguinte funcionou para mim:
$SummaryData = Get-ChildItem |
where {(New-TimeSpan -Start $_.LastWriteTime).TotalHours -lt 24} |
select-string 'SUMMARY' -context 0,10 |
Where-Object {$_.Context.PostContext -notmatch 'Files updated on right side'}
Por favor, tenha em mente que $summaryData
conterá objetos em vez de texto real, então, para obter texto, você precisa modificar o comando.
EDIT: Se você quiser apenas texto e se livrar da única linha que você mencionou:
Get-ChildItem |
where {(New-TimeSpan -Start $_.LastWriteTime).TotalHours -lt 24} |
select-string 'SUMMARY' -context 0,10 |
foreach {@($_.Line) + @($_.Context.PostContext) } |
where { $_ -notmatch 'Files updated on right side' }
Isso cria uma matriz de strings de $_.Line
(linha capturada) e $_.Context.PostContext
(tudo o que foi capturado pelo parâmetro -Context
), gera como [String []] e, finalmente, remove o elemento que você está procurando. .