【Windows】PCがシャットダウンされたときに特定プログラムを実行する

スポンサーリンク

PCがシャットダウンされたときに特定プログラムを実行する

以前に、Pythonで作ったプログラムをWindowsのタスクスケジューラで自動実行させる方法を紹介しました。

しかし、自動実行用の端末に設定しているのですが、以下のような問題が発生してしまいました。。。(;_;)

いつも触っている端末ではないため、メンテナンスなどですシャットダウンされたことに気づかず、プログラムが実行されていないことがある

ピエン(;_;)です。

毎日確認すれば良いんですが、それじゃあそもそも自動にしたメリットすげー薄れるようね。。。

ということで、調べてみると、

PCがシャットダウンされたときに、メールや特定のSNSなどでお知らせしてくれるプログラムを実行させれば良いんじゃないか

というところに行き着いたので、備忘のために記事にしたいと思います。

スポンサーリンク

方法

グループポリシー

グループポリシーを使って設定します。

スタートメニューの「ファイル名を指定して実行(「Windowsキー + R」のショートカットでもOK)」に「gpedit.msc」と入力してOKでグループポリシーが起動します。

「ローカルグループポリシーエディター」が開くので

コンピューターの構成>Windowsの設定 に進みます。

Windowsの設定>スクリプト に進みます。

スクリプト>シャットダウン に進みます。

「シャットダウンのプロパティ」が開くので「追加」を押します。

「スクリプトの追加」が開くのでここで電源が切れたときに実行したいプログラムを指定します。

スクリプト名の部分に、実行したいプログラムファイルのPATHを入力します。

batファイルだけじゃなく、JScriptやVBScriptや通常のアプリケーションの実行ファイルexeも指定出来ます。

参照で指定すると簡単ですね。

出来たら「OK」ボタンを押します。

こんな感じで出てくればOKです。

実行したいプログラムを用意する

順番前後しますが、実行したいプログラムを用意しておく必要があります。

ここではVBSのプログラムを用意します。

細かい内容は、本筋とずれるので出来たコードだけ残しときます。

'Outlookオブジェクトの変数宣言
Dim olObj
Set olObj = CreateObject("Outlook.Application")

'メール送信用のオブジェクト作成
Dim mailObj
Set mailObj = olObj.CreateItem(olMailItem)

' コンピューター名を取得
Set objNetwork = CreateObject("WScript.Network")
Dim strHostName
strHostName = objNetwork.ComputerName
Set objNetwork = Nothing '後処理

'メール送信内容の作成
	With mailObj
    	.To = "**送りたいメールアドレスを入れる**"                                   '宛先
    	'.CC = ""                                                                 'CCに指定する宛先、不要なら行ごと削除
    	'.BCC = ""                                                                'BCCに指定する宛先、不要なら行ごと削除
    	.Subject = "【重要】PC(" & strHostName & ")がシャットダウンしました"              'メールの件名
    	.Body = "PC(" & strHostName & ")ガッシャットダウンしました。起動の確認をして下さい。" 'メールの本文
    	.BodyFormat = 3                                                           'メールの形式(3:リッチテキスト形式)
	End With
  
'メール送信
mailObj.Send

コメント

タイトルとURLをコピーしました