2011年12月8日木曜日

◆Tee-Objectにはファイルの追加モードが無い

バッチ処理を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

一件落着。

3 件のコメント:

  1. 本日はアドベントカレンダーへのご参加ありがとうございました。

    Tee-Objectの-appendパラメータですが、v3でめでたく追加されています。
    このほかにもConnectで上がっていた要望のいくつかはv3で導入されているようですよ。

    返信削除
  2. いつもありがとうございます。

    そうなんですか。
    先日CTP2が出て、インストールしようとしたら意外と手間取ってしまいインストールしただけで満足してしまいました。
    これから暇を見つけて検証していきたいと思います。

    返信削除
  3. お、素晴らしいです。。

    返信削除