バッチ処理をPowershellで作り、ログを記録したいのだが「Tee-Object」には「Append」パラメータが無いのでファイルの追記が出来ずに困っているとの相談を受けた。
調べてみると確かに追記はできなさそう。(MSに要望は上がっているようだ)
画面に表示する内容とログ出力する内容が全く同じで良ければ「Start-Transcript」が使えると思うが、必ずしも同じではないものもあるということ。
幸い「Add-Content」コマンドレットに「PassThru」パラメータがあるので、これを使えば上手く行きそう。
Add-Content –Value hogehoge –path c:\hoge.log –pass |
これで一件落着、と思ったのだが今度はエラーメッセージがログに出力されないケースが有るとのこと。
データベースに処理を投げているのだが、Oracle(sqlplus)は大丈夫なのだがSQLServer(sqlcmd)のエラーが出力されないのだとか。
へぇ、そうなんだぁ。
sqlcmdの方はエラー出力に吐いているんでしょうねぇ・・・。
エラー出力の標準出力へのリダイレクトはこんな時も使えるのだろうか。
と思って使ってみると問題無く動作するようだ。
こんな感じ。
SQLCMD.EXE -i hoge.sql 2>&1 | add-content -Path d:\desktop\wk.log –pass |
一件落着。
本日はアドベントカレンダーへのご参加ありがとうございました。
返信削除Tee-Objectの-appendパラメータですが、v3でめでたく追加されています。
このほかにもConnectで上がっていた要望のいくつかはv3で導入されているようですよ。
いつもありがとうございます。
返信削除そうなんですか。
先日CTP2が出て、インストールしようとしたら意外と手間取ってしまいインストールしただけで満足してしまいました。
これから暇を見つけて検証していきたいと思います。
お、素晴らしいです。。
返信削除