2018年10月
  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 31      
無料ブログはココログ

« コンソールコマンド出力を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桁で折り返される。 »