...it just works the same, it doesn't include any context lines.
Porque não há contexto! Você disse explicitamente ao Get-Content para pegar 1 da última linha com -Last 1 , então Select-String recebe apenas uma linha.
Can anyone tell me why and what I could do to get context lines like this?
Claro, tudo o que você precisa fazer é aumentar o número de linhas para o parâmetro Last . Supondo que você corresponde a 1 line na regex e deseja que 1 line antes e 2 depois ( -Context 1,2 ), a quantidade total de linhas seria 1 + 1 + 2 = 4 :
Get-Content -Path 'xxx.log' -Tail 4 |
Select-String -Pattern 'Exception' -SimpleMatch -Context 1,2 |
ForEach-Object {
$_.Context.PreContext
$_.Line
$_.Context.PostContext
}