« PowerShellの.PS1ファイルを起動するバッチファイル(その5) | トップページ | PowerShellスクリプトをWSFファイルにして、ウィンドウ アプリっぽく実行する。 »

2007年8月26日 (日)

最小化や非表示で実行されるPowerShellスクリプトファイル(.JS)

PowerShellスクリプトの実行では、コンソールウィンドウが開きます。
そこで、PowerShellスクリプトをJSファイルに組み込んで、
コンソールウィンドウを最小化や非表示にして起動実行します。

PowerShellスクリプトの先頭に4行、末尾に1行を追加して拡張子を.JSにします。

var args=new Array();for(var e=new Enumerator(WScript.Arguments);!e.atEnd();e.moveNext()){args.push('"'+e.item()+'"');}
var wShell=new ActiveXObject('WScript.Shell');var Env=wShell.Environment('PROCESS');Env.Item('args')=args.join('\t');Env.Item('arg0')=WScript.ScriptFullName;
wShell.Run('powershell.exe -command "& {$s=get-content $env:arg0;$s=$s[([Array]::LastIndexOf($s,\'/*\')+1)..($s.length-1)]+\'\';$s=\'function main {\'+[String]::Join([char]13+[char]10,$s)+\'}main \'+$env:args;invoke-expression $s;}"',7);
/*
  $args.gettype()
  $args.length
  $args
#*/

これをダブルクリックなどで起動します。ドロップなどで引数も渡せます。
ExecutionPolicyがRestrictedのままでも、実行できます。

上では、最小化(7)にしています。非表示ならRun(,0)に変えてください。

« PowerShellの.PS1ファイルを起動するバッチファイル(その5) | トップページ | PowerShellスクリプトをWSFファイルにして、ウィンドウ アプリっぽく実行する。 »