質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

3回答

24262閲覧

batファイルにてpowershellコマンドを使用して別batツールを実行したときの標準出力について

javabigineer

総合スコア87

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2017/01/26 04:43

あるbatファイルから、powershellコマンドを使用して他バッチを呼び出す処理を作成しており、その他バッチの実行結果を標準出力(エラー出力もリダイレクト)させようと思って下記のように記述しました。

powershell.exe -Command Start-Process """"%~dp0Delcomn.bat"" -Verb Runas > C:\tmp\delcom\result.log 2>&1

実行すると、result.logファイルは作成されましたが、
標準出力もエラー出力もされておらず0バイトのファイルのみ作成されている状態です。

実行ログとしてファイルを出力させたいのですが、
なぜ出力されないのでしょうか??

ご教授いただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Start-Processコマンドレットに-Verb Runasオプションを指定すると別ウィンドウとしてコンソールウィンドウが開いてそこでバッチファイルが実行されるわけですが、ご質問のような書き方だとリダイレクトはpowershell.exeの出力に対して行われるため、別ウィンドウでの出力は反映されないことになります。そのため、「リダイレクトも含めて」Start-Processコマンドレットに渡さないといけません。

このような感じで「コマンドライン引数」としてリダイレクトを渡すと、バッチファイル名とともにcmd.exeに渡されるため、別ウィンドウで実行されるcmd.exeがリダイレクトを処理してくれます。

dos

1powershell.exe -Command Start-Process """バッチファイル名""" -Verb runas -ArgumentList """> ログファイル名 2>&1"""

投稿2017/01/26 06:09

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2017/01/26 06:48

リダイレクトをArgumentList に指定する発想浮かびませんでした。 勉強になりました。
guest

0

まだ、解決していなければ以下のコマンドでは如何でしょう。

Start-Processコマンドレットを使用せずに記述してみました。
標準出力およびエラー出力をパイプでログファイルに書き出すようにしています。

powershell.exe -Command "バッチファイル名 -Verb Runas 2>&1 | Add-Content -Path ログファイル名"

投稿2017/04/03 06:11

s_yoshi

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ぱっと思いつく範囲での回答になります。

Start-Process のオプションで標準出力と標準エラー出力を別々にファイルへ出力することはできます。 2>&のように標準出力・標準エラー出力を両方は手軽にはできなさそうです。

-RedirectStandardOutput D:\temp\stdout.log -RedirectStandardError D:\temp\stderr.log

投稿2017/01/26 05:14

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問