PowerShell スクリプト実行時は必ずPowerShellのウインドウが開きます。スクリプトをタスクスケジューラーで実行させるようなケースではウインドウが表示されるのは避けたいものです。
PowerShell をウインドウ非表示で実行する方法を紹介します。
スクリプト
WSHから、PowerShellのスクリプトを呼び出すことでウインドウを非表示にできます。 2020/2/23 更新. PowerShellへの複数の引数に対応しました
ファイル名: launch_ps.js
var shell = WScript.CreateObject("WScript.Shell"); var args = WScript.Arguments; var cmd = "" for(var i=0; i < args.length; i++) { cmd += " " + args(i) } var ret = shell.Run("powershell.exe -ExecutionPolicy RemoteSigned -File" + cmd, 0, true); WScript.Quit(ret);
タスクスケジューラへの登録
以下の条件下でのタスクスケジューラへの登録を説明します。
launch_ps.js 上記のスクリプト
test.ps 起動したいPowerShellスクリプト
この2つを c:\tempに配置
項目 | 説明 |
---|---|
プログラム/スクリプト | wscript |
引数の追加 | launch_ps.js test.ps |
開始 | c:\temp |
各々の環境に合わせて置き換えてください。
つぶやき
JScriptに頼らなければならないのはPowerShellの仕様という名のバグです。
リンク
EXCELなどVBAからPowerShell スクリプトをウインドウ非表示でコールする方法は以下をご覧ください。
pmp-style.hatenablog.com