
死活監視のスクリプトに、ログの出力機能が欲しくなりました。バッチで作ってた時は、リダイレクト(>>)を使ってたんですけどpowerShellではどうしようかなぁ。
まず、ファイル出力する方法を調べました。どうやら、Out-Fileコマンドレットを使うことでファイル出力が可能なようです。
下記は、C:\My Documents\test.txt に 'test'を書き込むサンプルです。
問題は、文字コードがUnicodeで作成されることです。そこで-Encodingで文字コードを指定します。選択できるのは、Unicode、UTF7、UTF8、UTF32、ASCII、BigEndianUnicode、Default、OEM です。
ログ出力なので、追記で書き込みたいです。それは、-appendを指定すれば可能のようです。
ここまでの事を踏まえて、ログ出力用の関数を作るとこんな感じになりました。
んで、使い方はこんな感じ。標準出力とログファイルの両方に出力できるようになりました。
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク
まず、ファイル出力する方法を調べました。どうやら、Out-Fileコマンドレットを使うことでファイル出力が可能なようです。
下記は、C:\My Documents\test.txt に 'test'を書き込むサンプルです。
'test' | out-file 'C:\My Documents\test.txt'
問題は、文字コードがUnicodeで作成されることです。そこで-Encodingで文字コードを指定します。選択できるのは、Unicode、UTF7、UTF8、UTF32、ASCII、BigEndianUnicode、Default、OEM です。
'test' | out-file 'C:\My Documents\test.txt' -Encoding ASCII
ログ出力なので、追記で書き込みたいです。それは、-appendを指定すれば可能のようです。
'test' | out-file 'C:\My Documents\test.txt' -Encoding Default -append
ここまでの事を踏まえて、ログ出力用の関数を作るとこんな感じになりました。
# ----------------------
# ログ出力用関数
# ----------------------
# 【機能概要】
# メッセージを、画面とテキストファイルに追加書込みします。
# 出力時に日時を追加表示することも可能です。
# 【引数】
# msg 表示するメッセージ
# file 出力するテキストファイルの完全パス
# dspTimeFlag メッセージへの日時に追加出力(0:追加しない, 1:追加する)
function msgOutput([String]$msg, [String]$file, [boolean]$dspTimeFlag) {
if ($dspTimeFlag) {
$WkLogTimeMsg = Get-Date -format yyyy/MM/dd-HH:mm:ss
Write-Host ($msg + ' : ' + $WkLogTimeMsg)
Write-Output ($msg + ' : ' + $WkLogTimeMsg) | out-file $file Default -append
} else {
Write-Host $msg
Write-Output $msg | out-file $file Default -append
}
}
んで、使い方はこんな感じ。標準出力とログファイルの両方に出力できるようになりました。
# msgOutput関数で、ログと画面への出力を同時に行います。
msgOutput '□□□□□□□□□□□□□□□□□□□' $LogName $LogDateFalse
msgOutput 'ListWorksのバックアップを開始します。' $LogName $LogDateTrue
msgOutput '□□□□□□□□□□□□□□□□□□□' $LogName $LogDateFalse
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


