[Pwsh Tailコマンド]tailコマンド新展開

以前Tailコマンドの話題で、「LogLogViwer」を紹介したが、

最近、

オブジェクト参照がオブジェクトインスタンスに設定されていません

というエラーが頻発して使い勝手が悪くなってきた。そこで、Powershellが使いやすくなってきたので、それで代替手段を模索することにする。

使い方は、

www.geekfeed.co.jp

のリンクで紹介されている通り。ただし、日本語が文字化けしてしまう。

www.fenet.jp

も参照にして、現時点での結論は、次の通り。

PS 【power shellのプロンプト】> Get-Content -Wait -Tail 10 -Path "【監視したいログファイルのパス;共有フォルダ先でもOK】" -Encoding Shift_JIS

 

追記

コマンドとして使えるようにする

このままではタイプ数が多いので、もう少し便利に使えるようにしたい。

そのため、Pwsh上でエイリアスを使えるようにしたい。

ところが、Pwshでは、単純な「Set-Alias」ではダメで、「function」を使った方法を行なうことになります。

以降、

qiita.com

のページに従った作業を行います。

1、コマンドの整理

まず、上記のコマンドを整理して、次のように引数が最後に来るように並べなおします。

PS 【power shellのプロンプト】> Get-Content -Encoding Shift_JIS -Wait -Tail 10 -Path "【監視したいログファイルのパス;共有フォルダ先でもOK】"

 

2、必要な、ディレクトリ、ファイルの作成

PS 【power shellのプロンプト】> echo $profile

で、表示された設定ファイルを作成します。要確認ですが、

多分フォルダもないと思うので、まずディレクトリ作成から行います。

PS 【power shellのプロンプト】>  new-item C:\Users\【Windowsユーザ名】\Documents\PowerShell -itemtype directory

 

次に、ファイル作成(いきなり編集でも可)

PS 【power shellのプロンプト】>  new-item C:\Users\【Windowsユーザ名】\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

 

編集にはノートバッドが使える(なぜかVimが未整備だった)

PS 【power shellのプロンプト】>  notepad.exe C:\Users\【Windowsユーザ名】\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

編集した内容は以下の通り。

$ALIASES = "C:\Users\【Windowsユーザ名】\Documents\PowerShell\powershell_aliases.ps1"
. $ALIASES #「.(ドット)で読み込ませます」

 

エイリアスリストを「powershell_aliases.ps1」として分割する方法を採用して、

PS 【power shellのプロンプト】>  notepad.exe C:\Users\【Windowsユーザ名】\Documents\PowerShell\powershell_aliases.ps1

 

編集した内容は次の通り。


############
#    @T    #
############
# tail -f コマンドを作成
function tail(){
	if( $args ){
		#引数(ログファイルパス)の指定がある場合
		Get-Content -Encoding Shift_JIS -Wait -Tail 10 -Path $args
	}
	else{
		#使い方の表示【暫定】
		Write-Output "tail 【ログファイル名のパス】"
	}
}

3、実行する

今すぐ確認するにはドットで実行すればよい。

PS 【power shellのプロンプト】> . $profile