[Powershell]tail -fしたい

超まとめ

Powershell v5ならできます。

Get-Content <入力ファイルへのパス> -wait -tail <tailする行数>

実は-TailはPowershell v3で追加されていましたが、使えなかった。

Powerhshellのヘルプを見ると、-TailをPowershell 3.0で追加したぜ!って書いてあります。

が。Powershell 3.0の頃はどうもファイルクローズされるまで更新されなかった模様。
http://stackoverflow.com/questions/19919180/get-content-wait-not-working-as-described-in-the-documentation
ですので、使えないケースが多々あったようです。

Powershell v5でファイルクローズされなくても更新されたタイミングで反映されるようになったのでこの問題は解決し、無事tail -fと同じ事ができるようになりました。

v5での動作は確認しましたが、v3での動作は確認できず。

v5で

1..30 | % { "${_}: Write $(Get-Date -Format "hh:mm:ss")"; start-sleep 1 } >C:\temp\t.txt

しながら別コンソールで

get-content c:\temp\t.txt -tail 1 -wait | % { "$_ read at $(Get-Date -Format "hh:mm:ss")" }

するとちゃんとtail -fっぽく動作することは確認しました。

ただ、v3には-Tailオプションがあるけどファイルクローズされるまで更新されない動作のために使い物にならなかった、という話は、v3環境が手元にないので確認していません。

One Reply to “[Powershell]tail -fしたい”

コメントを残す