PMPの流儀

我が家の流儀

我が家で気になったことを夫婦で取り上げていきます

MENU

PowerShell 実行時にウインドウを非表示にする方法

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