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桁で折り返される。 »