トップ回答者
タスクによる自動実行時に表示されるウィンドウについて

質問
回答
すべての返信
-
VBSと組み合わせると実現できるようですね。
-
て~ら~ さんからの引用 CatTailさん
ご返信、ありがとうございます。
本スクリプトは勤務先のサーバに適用しているのですが、一瞬でもウィンドウが表示されるのは好ましくないとの事です。最小化ではなく、完全に目に見えない形で実現して欲しいと要求があり、残念ですが、CatTailさんの案では駄目なようです。
また、VBSを組み合わせた方法も検討を行ったのですが、タスク実行時に、svchost.exeのウィンドウが表示されてしまいました。(通常の実行時にはcmd.exeのウィンドウが表示されています)
なぜでしょうか?
Windowsタスクを使っているんですよね。
でしたら、[実行するアカウント名]をログインしているユーザーとは別のユーザーアカウントに設定すれば、ウィンドウは表示されないはずですけど。
他の方法としては、SQL ServerがインストールされているならSQL Server エージェントで動かすという手もありますけど。
(この場合はSQL Server Agent サービスの権限で動作します)
-
どうしても.ps1ファイルだけでやりたいなら、こういうのもあります。
「最小化や非表示で起動できるPowerShellスクリプトファイル(.PS1)」
http://scripting.cocolog-nifty.com/blog/2007/08/powershellps1_51e0.html -
ウィンドウズスクリプトプログラマさん
ご返信、ありがとうございます。
一つ一つに返信させていただきます。
>具体的にどういうコマンドラインを指定したのですか?
初音玲さんの返信にあった参照先をそのまま利用させていただきました。
具体的には 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早速試させていただきましたが、一瞬は表示されるんですね。その後すぐに最小化や非表示になりますが、最初からウィンドウが一切立ち上がらない方法はないでしょうか?
-
問題ですが、解決しました。
>"VBSファイルのフルパス"でも一応動きますが、デフォルト設定によって、wscript.exeかcscript.exeか不定なので、明示的に、
wscript.exe "VBSファイルのフルパス"
とするのがよいでしょう。
この内容が知識不足のため、理解できなかったので、「wscript」と「cscript」に関して調べてみました。
現在検証のため自身のPCでスクリプトを動かしていたのですが、どうやら既定のホストスクリプトがwscriptであったために、ウィンドウが毎回開いていたことがわかりました。
そのため、コマンドプロンプトから既定のホストスクリプトをwscriptに変更したところ、無事ウィンドウが開かずにスクリプトを動作させることができました。
ちなみにサーバの方は簡単なスクリプトを起動させてみたところ、wscriptが既定のホストスクリプトであることが判明したため、VBSを組み合わせてスクリプトを動作させることで解決しました。
自分の知識不足のために重要な情報を拾い損ねてしまい、アドバイスをしてくださった皆様には申し訳ない気持ちです。
本件の解決において、情報提供をしていただいたウィンドウズスクリプトプログラマさん、初音玲さん、CatTailさんに、お礼を申し上げます。ありがとうございました。