記事
· 2021年3月2日 2m read

$ZF(-100) で実行したコマンドの結果をファイルに出力する方法

これは InterSystems FAQ サイトの記事です。
 

以下の方法で、$ZF(-100) で実行したコマンドの出力を取得することが可能です。
 

★$ZF(-100) での実行でコマンドキーワードを使用する方法:

/STDOUT や /STDERR などの便利なキーワードを指定して、$ZF(-100) でコマンドを実行することが可能です。

USER>write $zf(-100,"/SHELL/STDOUT=c:\temp\result.log/STDERR=c:\temp\error.log","net","use","\\testsrv\public","/user:testuser","password")
2
USER>!type c:\temp\result.log                                                    

USER>!type c:\temp\error.log
システム エラー 1219 が発生しました。
同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続
は許可されません。サーバーまたは共有リソースへの以前の接続をすべて切断してから、
再試行してください。
USER>write $zf(-100,"/SHELL/STDOUT=c:\temp\result.log/STDERR=c:\temp\err.log","netstat","-anp","tcp")
0
USER>!type "c:\temp\result.log"
アクティブな接続
 
  プロトコル  ローカル アドレス      外部アドレス           状態
  TCP         0.0.0.0:23             0.0.0.0:0              LISTENING
  TCP         0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP         0.0.0.0:135            0.0.0.0:0              LISTENING
  :
USER>!type "c:\temp\err.log"
USER>

コマンドキーワードについては、以下のドキュメントをご覧ください。
$ZF(-100) で指定できる便利なキーワード
※ /STDOUT と /STDERR に同じファイルを指定した場合、両方のタイプのデータがそのファイルに書き込まれます。


★標準エラー出力(2) を 標準出力(1) へリダイレクトする方法:

以下の方法で、標準エラー出力(2) を 標準出力(1) へリダイレクトし、さらにコマンドの 標準出力 を ファイル(result.log) へ出力する方法が使用できます。

USER>Set st = $ZF(-100, "/shell", "net", "use", "\\server1\Public", "/user:name", "password", ">result.log", "2>&1")
 
USER>write st    // 戻り値が0(成功)以外の時、ログを見て原因を調査してみる
2


上記コマンドの場合、実行したネームスペースのデフォルトデータベースのフォルダに result.log が出力されます。
内容は以下のような標準出力が記録されています。

/* result.log */

システム エラー 1219 が発生しました。

同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続は許可されません。サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。



enlightened【ご参考】
$ZF(-100) で指定できる便利なキーワード

ディスカッション (1)0
続けるにはログインするか新規登録を行ってください