2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« コンソールコマンド出力をHTAウィンドウにテキスト形式で表示、印刷、名前を付けて保存する。 | トップページ | PowerShellの外部への出力が79桁で折り返される。 »

2010年7月15日 (木)

PowerShellのワンライナをWScript.ShellのExec()すると、終了待ちが解けない。

例えば、

MsgBox CreateObject("WScript.Shell").Exec("PowerShell ""dir""").StdOut.ReadAll

は、コンソールが開いたまま動きません。コンソールを閉じると動きます。

PowerShellが標準入力を待つからのようです。

この待ちを解くには、スクリプトから、StdIn.Closeするか、あるいは、コマンドラインの先頭に、"cmd /c <nul "を付けます。

Set oExec=CreateObject("WScript.Shell").Exec("PowerShell ""dir""")
oExec.StdIn.Close
MsgBox oExec.StdOut.ReadAll

または、

MsgBox CreateObject("WScript.Shell").Exec("cmd /c <nul PowerShell ""dir""").StdOut.ReadAll

« コンソールコマンド出力をHTAウィンドウにテキスト形式で表示、印刷、名前を付けて保存する。 | トップページ | PowerShellの外部への出力が79桁で折り返される。 »