
マシンをシャットダウンする時、ローカルコンピュータポリシーに設定された
シャットダウンスクリプトを実行するかどうか選択する仕組みを作ることはできないでしょうか?
やりたいことは以下です。
・毎日PCの電源を切るときにスクリプトを実行したい
・それは、ログオフしてシャットダウンする前(シャットダウンスクリプトのタイミング)で実行したい
・ただしそのスクリプトは時間がかかる
・業務中にシャットダウン(or再起動)した時には、スクリプトを実行したくない
・1日の終わりにシャットダウンしたときだけスクリプトを実行したい
方向性としては2つあると思っております。
【方向性1】
業務中のシャットダウン(or再起動)は、スタート→シャットダウンで実行する。
帰宅前のシャットダウンでは、用意してあるスクリプトを実行してシャットダウンする。
そのスクリプトでは、シャットダウンスクリプトを設定してからシャットダウンする(shutdown.exe)
スタートアップスクリプトでは、シャットダウンスクリプトが設定されていれば、その設定を解除するようにしておく。
→ <質問1>スクリプトでシャットダウンスクリプトを設定/解除する方法が分かりません。
【方向性2】
<質問2>シャットダウンスクリプトを実行するかどうか選択してシャットダウンする方法が存在する?
環境 : Windows XP Pro XP3
<質問1><質問2>をご存知の方、ご教授お願いします。
また、上記以外の方向性で実装できる手段がありましたら、同じくご教授お願い致します。

No.3ベストアンサー
- 回答日時:
スクリプトを修正してよいのであれば、たとえば、VBScript の場合は MsgBox で問い合わせできますよ。
シャットダウン スクリプトでも動作します。
参考URL:http://www.upken.jp/wiki/vbs_msgbox_sample.html
回答ありがとうございます。
この方法は良いかもしれません。
数分間ユーザの入力を待ち、
入力があった → スクリプトを実行しない
入力がなに → スクリプトを実行する
というケースで分ければ、要件を満たすかもしれません。
業務中必要なシャットダウンであれば、ユーザはマシンの前にいるはずですから。
検討してみます。ありがとうございました。

No.5
- 回答日時:
> 数分間ユーザの入力を待ち、
> 入力があった → スクリプトを実行しない
> 入力がなに → スクリプトを実行する
> というケースで分ければ、要件を満たすかもしれません。
この要件であれば、MsgBox ではなく、Popup の出番ですね。
参考URL:http://www.upken.jp/wiki/wsh_popup_sample.html
No.4
- 回答日時:
他の方が回答されていますが、vbsのmsgboxの返り値を変数に入れれば、ユーザの応答を得ることが出来ます。
「本日の業務を終了しますか?(Y/N)」みたいなものです。
Yにしたばあいは特定の処理に移り、Nの場合は処理せずにシャットダウンまたは再起動になるようにします。
ローカルポリシーにスクリプトを設置する場合ですが、対象の作業をさせるスクリプトを直接登録しても、処理が終わる前にシャットダウンしてしまうことがあります。その場合はいくつか方法がありますが、「対象の作業」が何らかのアプリケーションを起動する場合、WMIのプロセス監視機能を同VBSに仕込んで、目的のプロセスが動いている間はスクリプトが終了しないようにループ文を作ることで対応できます。
私はこの方法で、WEBアプリを使い「帰宅時間管理」を運用をしていました。(WMIでIEを監視)
何かのご参考になればと思います。
回答ありがとうございます。
> ローカルポリシーにスクリプトを設置する場合ですが、対象の作業をさせるスクリプトを直接登録しても、処理が終わる前にシャットダウンしてしまうことがあります。
この点は、ShellオブジェクトのRunメソッドを使い外部プログラムの終了まで待機させることで、シャットダウンスクリプトにおいても確実にスクリプト全体を実行させることができることを確認済みでした。
Set WshShell = WScript.CreateObject("WScript.Shell")
Call WshShell.Run(EXE_PATH, 1, True)
No.2
- 回答日時:
>帰宅前のシャットダウンでは、用意してあるスクリプトを実行してシャットダウンする。
私は「帰宅前このアイコンで電源を落としてください」という「操作指導」で終わらせました。
そのアイコンにはバックアップ用のプログラムを入れてます。このプログラムの最後でShutdown.exeを実行しています。(当然バックアップのみの選択もできます)
私もシャットダウンスクリプトは検討したのですが面倒なので「操作指導」で終わらせました。
運用でカバーできるならあまり複雑にしないほうがいいと思います。
回答ありがとうございます。
そもそもシャットダウンスクリプトである必要があるのかは確かに別途検討が必要かと思います。
その検討はしますが、ここではあくまで「シャットダウンスクリプトを選択的に実行する方法・仕組み」を質問させて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
シェルスクリプトとターミナル...
-
SPI非言語の問題 解説お願いします
-
エクセルの表にヘンな枠が・・・
-
Linux のシェルスクリプトの強...
-
PowerShellのスクリプト実行に...
-
emacsでCtrl+zを押してサスペン...
-
ubuntuでもwindowsのバッチファ...
-
デフラグは途中で止めても効果...
-
linuxサーバーのキャッシュをク...
-
Windows XP Service pack 3 の...
-
CRONTAB設定で2日間隔記述方法...
-
ファイル名を指定して実行の実...
-
プログラム実行しようとすると...
-
Windows VistaやWindows7にて、...
-
ファイル名一覧の印刷
-
ubuntuの端末の左にカレントデ...
-
Docker環境は以下通りです。doc...
-
VBAを使って電源を切るには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
エクセルの表にヘンな枠が・・・
-
Linux のシェルスクリプトの強...
-
PowerShellのスクリプト実行に...
-
最初の一度しか実行されないロ...
-
sudoで実行したコマンドの実行...
-
大手町駅。それはホームから非...
-
SPI非言語の問題 解説お願いします
-
windows10のごみ箱をrd /s /q C...
-
バッチファイル内の各コマンド...
-
Openイベントを開始させないで...
-
シャットダウンバッチがうまく...
-
サーバでログオフするとアプリ...
-
エクセルからアクセスのプロシ...
-
taskkill をバッチ処理できない。
-
emacsでCtrl+zを押してサスペン...
-
shutdownコマンド実行の残り時...
-
python IDLEで訂正、削除のやり...
-
ACCESSレポートをPDFに出力したい
おすすめ情報