次の方法で共有


タスクによる自動実行時に表示されるウィンドウについて

質問

2008年12月2日火曜日 2:40

現在、ログの監視スクリプトをタスクを利用して定期的に実行するようにしています。

しかし、スクリプトが起動するたびに、ウィンドウが表示されてしまい、非常に目障りな状態となっております。

 

タスクによる自動実行のときに、いちいちウィンドウが表示されないようにするにはどうすればよいのでしょうか?

すべての返信 (10)

2008年12月2日火曜日 9:14 ✅回答済み

具体的にどういうコマンドラインを指定したのですか?

 

"VBSファイルのフルパス"でも一応動きますが、デフォルト設定によって、wscript.exeかcscript.exeか不定なので、明示的に、

wscript.exe "VBSファイルのフルパス"

とするのがよいでしょう。

 

ショートカットを使う場合は、

rundll32.exe shell32.dll,ShellExec_RunDLL "ショートカットのフルパス"

とすればよいでしょう。


2008年12月2日火曜日 4:04

VBSと組み合わせると実現できるようですね。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=44224&forum=7


2008年12月2日火曜日 4:35

初音玲さん

 

返信、ありがとうございます。

 

参照先ですが、見させていただきました。

VBSを使えば可能であるとの事ですが、できればPowerShell単独で実現したいというのが本音です。

 

参照先を見る限りではPowerShell単独での問題解決は不可能っぽい書き込みがありますが、もしPowerShell単独での実現手段がございましたらお願いいたします。


2008年12月2日火曜日 5:29

 て~ら~ さんからの引用

現在、ログの監視スクリプトをタスクを利用して定期的に実行するようにしています。

しかし、スクリプトが起動するたびに、ウィンドウが表示されてしまい、非常に目障りな状態となっております。

 

タスクによる自動実行のときに、いちいちウィンドウが表示されないようにするにはどうすればよいのでしょうか?

 

STARTコマンドを/MINオプションを付けてPowerShellを起動してみてはどうでしょうか?

ただし、ウィンドウが最小化されるだけですが。

例)

START /MIN PowerShell スクリプト


2008年12月2日火曜日 7:42

CatTailさん

 

ご返信、ありがとうございます。

 

本スクリプトは勤務先のサーバに適用しているのですが、一瞬でもウィンドウが表示されるのは好ましくないとの事です。最小化ではなく、完全に目に見えない形で実現して欲しいと要求があり、残念ですが、CatTailさんの案では駄目なようです。

 

また、VBSを組み合わせた方法も検討を行ったのですが、タスク実行時に、svchost.exeのウィンドウが表示されてしまいました。(通常の実行時にはcmd.exeのウィンドウが表示されています)

なぜでしょうか?

 

 


2008年12月2日火曜日 11:14

 て~ら~ さんからの引用

CatTailさん

 

ご返信、ありがとうございます。

 

本スクリプトは勤務先のサーバに適用しているのですが、一瞬でもウィンドウが表示されるのは好ましくないとの事です。最小化ではなく、完全に目に見えない形で実現して欲しいと要求があり、残念ですが、CatTailさんの案では駄目なようです。

 

また、VBSを組み合わせた方法も検討を行ったのですが、タスク実行時に、svchost.exeのウィンドウが表示されてしまいました。(通常の実行時にはcmd.exeのウィンドウが表示されています)

なぜでしょうか?

 

Windowsタスクを使っているんですよね。

でしたら、[実行するアカウント名]をログインしているユーザーとは別のユーザーアカウントに設定すれば、ウィンドウは表示されないはずですけど。

 

他の方法としては、SQL ServerがインストールされているならSQL Server エージェントで動かすという手もありますけど。

(この場合はSQL Server Agent サービスの権限で動作します)

 


2008年12月2日火曜日 13:08

どうしても.ps1ファイルだけでやりたいなら、こういうのもあります。

 

「最小化や非表示で起動できるPowerShellスクリプトファイル(.PS1)」
http://scripting.cocolog-nifty.com/blog/2007/08/powershellps1_51e0.html


2008年12月3日水曜日 5:46

ウィンドウズスクリプトプログラマさん

 

ご返信、ありがとうございます。

一つ一つに返信させていただきます。

 

>具体的にどういうコマンドラインを指定したのですか?

初音玲さんの返信にあった参照先をそのまま利用させていただきました。

具体的には test.vbs に以下の内容を記述しました。

CreateObject("WScript.Shell").Run "powershell .PS1ファイル", 0

 

 

>Windowsタスクを使っているんですよね。

でしたら、[実行するアカウント名]をログインしているユーザーとは別のユーザーアカウントに設定すれば、ウィンドウは表示されないはずですけど。

 

そのとおりなんですが、スクリプトをあてているサーバはリモートデスクトップでアクセスするのですが、利用できるアカウントが1つしかなく、アカウントの追加も認められませんでした。そのため、実行するアカウント以外のアカウントではログインできません。

 

>どうしても.ps1ファイルだけでやりたいなら、こういうのもあります。

「最小化や非表示で起動できるPowerShellスクリプトファイル(.PS1)」
http://scripting.cocolog-nifty.com/blog/2007/08/powershellps1_51e0.html

 

早速試させていただきましたが、一瞬は表示されるんですね。その後すぐに最小化や非表示になりますが、最初からウィンドウが一切立ち上がらない方法はないでしょうか?

 


2008年12月3日水曜日 7:32

言葉が通じてないようですね。

タスクのプロパティに「実行するファイル名」があります。

このマイクロソフトの命名がよくないと思いますが、ここに書く「コマンドライン」のことです。

?ボタンでヘルプを見れば説明が書いてあります。


2008年12月4日木曜日 8:37

問題ですが、解決しました。

 

>"VBSファイルのフルパス"でも一応動きますが、デフォルト設定によって、wscript.exeかcscript.exeか不定なので、明示的に、

wscript.exe "VBSファイルのフルパス"

とするのがよいでしょう。

 

この内容が知識不足のため、理解できなかったので、「wscript」と「cscript」に関して調べてみました。

現在検証のため自身のPCでスクリプトを動かしていたのですが、どうやら既定のホストスクリプトがwscriptであったために、ウィンドウが毎回開いていたことがわかりました。

そのため、コマンドプロンプトから既定のホストスクリプトをwscriptに変更したところ、無事ウィンドウが開かずにスクリプトを動作させることができました。

 

ちなみにサーバの方は簡単なスクリプトを起動させてみたところ、wscriptが既定のホストスクリプトであることが判明したため、VBSを組み合わせてスクリプトを動作させることで解決しました。

 

自分の知識不足のために重要な情報を拾い損ねてしまい、アドバイスをしてくださった皆様には申し訳ない気持ちです。

 

本件の解決において、情報提供をしていただいたウィンドウズスクリプトプログラマさん、初音玲さん、CatTailさんに、お礼を申し上げます。ありがとうございました。