A partir do PowerShell 3, o cmdlet Get-Content
(alias gc
) suporta os parâmetros -Tail
e -Wait
quando usado em um sistema de arquivos. Procure com help gc
.
Como posso replicar o comportamento da cauda do Linux no PowerShell?
Estou executando um aplicativo que grava um arquivo de log ( error.log
) e gostaria de ver as últimas linhas dele, bem como manter as alterações de atualização do console.
Então, há um equivalente a algo como tail -f filename
no PowerShell?
O equivalente PS nativo desde PSv3 é
Get-Content -Last n
que também é rápido. Na PSv2 e abaixo você tem que se contentar com
Get-Content filename | Select -Last n
mas isso tem várias ressalvas. Ele não pode bloquear e aguardar novas alterações no arquivo, por exemplo, e também não é muito eficiente, pois precisa ler o arquivo desde o início completamente antes de poder mostrar as últimas linhas.
PSCX tem um comando Get-FileTail
que tem um parâmetro -Wait
:
Name
Get-FileTail
Synopsis
PSCX Cmdlet: Tails the contents of a file - optionally waiting on new content.
Syntax
Get-FileTail [-Path] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>] [-Wait] [<CommonParameters>] Get-FileTail [-LiteralPath] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>] [-Wait] [<CommonParameters>]
Description
This implentation efficiently tails the cotents of a file by reading lines from the end rather then processing the entire file. This behavior is crucial for efficiently tailing large log files and large log files over a network. You can also specify the
Wait
parameter to have the cmdlet wait and display new content as it is written to the file. Use Ctrl+C to break out of the wait loop. Note that if an encoding is not specified, the cmdlet will attempt to auto-detect the encoding by reading the first character from the file. If no character haven't been written to the file yet, the cmdlet will default to using Unicode encoding. You can override this behavior by explicitly specifying the encoding via the Encoding parameter.
Get-FileTail
é com alias para tail
por padrão se você instalar o PSCX.
Tags windows windows-8 powershell