yellowhappeicco.blog

Notion,GAS,読んだ本etc…

VPN接続の状態を確かめてからシャットダウンできるようにバッチファイルを作った話

30歳になりました、OLアイドルのいっこです💙🔫19歳の時にスペインに短期留学していまして、10年経った29歳のタイミングでもう1回スペイン行くぞ~!と意気込んでたんですが、コロナ禍で行くことが出来ず・・。スペインに行けるまではずっと29歳と名乗ろうかなと考えている今日この頃です。

VPN接続とシャットダウンのアブナイ関係

さて、今日は「PCのシャットダウン前にポップアップメッセージを出す」というバッチファイルを作った話です。

とあるクライアント様からPCを貸与していただいているんですが、先日こんなことを言われました。

この作業するときはVPN接続をお願いしますね!あ、でも注意点があって・・。
VPN接続したままシャットダウンすると、翌日、PCが立ち上がらなくなるみたいなんです。
直すには、弊社のオフィスに来ていただくしかなくて・・。

末恐ろしすぎませんか・・。付箋に「VPN注意!」と書いて貼る、みたいな初歩的な対策をしても絶対にミスる自信があります。タスク書いた付箋を何日も何週間も貼りっぱなしで、もはや風景の一部として認識してしまっている人を何人も見たことがある、俺は詳しいんだ・・。

ということで、シャットダウンしようとしたら1.ネットワークの接続状態が確認できる画面が出てくる2.そのうえで「シャットダウンしますか?」というメッセージボックスが出てきて3.「はい」を押したら、3分後に自動で電源が切れるという処理を行ってくれるバッチファイルを作ることにしました。今回は、仮に間違って「はい」を押しても3分あれば、その間にVPNが切れるだろうということで、3分後にシャットダウンするように設定しています。

※文系学部卒、かつ、非エンジニアが色々調べながら書いたものになるのでここから先に出てくるコードに関して動作保証まったくできません。

ネットワークの接続状態を確認するコマンドプロンプト

まずはネットワークの接続状態を確認できる画面が出てくるようにします。

コマンドプロンプトを開いて「ipconfig」と打ち込むとこんな感じでネットワークの接続状態が確認できます。

image block

なので、まずはメモ帳を開いて、ipconfigと入力します。
このまま保存すると、コマンドプロンプトが開いてネットワークの状態を確認できるんですが、瞬殺でコマンドプロンプトが消えます。
なので「何かキーを押すまでは処理を一時中断する」というコマンド、pauseを入力します。

image block
ipconfig
pause

このファイルをいったん、名前を付けて保存します。保存するとき「.txt」を消して「.bat」に変えるのと、文字コードをANSIにすることをお忘れなく!

image block

保存されたbatファイルをダブルクリックするとコマンドプロンプトが開いてネットワークの接続状態を確認できます。

シャットダウン前にメッセージボックスを出すVBS

次に、シャットダウン前にメッセージボックスが出てきて「OK」を押したらシャットダウンの処理がスタートするVBSファイルを作ります。

コマンドプロンプト上で「Y」と入力したらシャットダウン、「N」と入力したらキャンセル、という形にしてもよかったのですが
今回はこういうメッセージボックスが出るような仕様にしました。

image block

というのも、自分以外のメンバーのPCでも同様の動きをさせるにあたって
「よくわからない真っ黒い画面が出てきてそこにYかNを打ち込む」よりもこうしたメッセージボックスのほうが馴染みがありそうだなと思ったからです。

真っ黒い画面って、なんか怖いらしいので・・。

メッセージボックスを出して「OK」を押したらシャットダウン処理、キャンセルを押したら「中止しました」というメッセージボックスを出すように分岐させます。

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

A = MsgBox("シャットダウンしますか?", vbOKCancel,"確認")
If A = vbOK Then
objWshShell.Run "%WINDIR%system32\shutdown.exe -s -t 180"
ElseIf A = vbCancel Then
msgbox "シャットダウンを中止しました",,"中止"

End If

下記の180がシャットダウンされるまでの秒数なので、ここを0にすると、OK押した後にすぐシャットダウン処理が開始されるようになります。この辺りは好みの問題なのでお好きに!

objWshShell.Run "%WINDIR%system32\shutdown.exe -s -t 180"

書き終えたらこのファイルも保存します。今回は保存するときに.txtから.vbsに変えます。

image block
コマンドプロンプトから、VBSファイルを呼び出して実行する

この2つのファイルを、デスクトップに置いて
「まずはネットワークの接続状態を確認。よし、OKだったからコマンドプロンプトはいったん閉じて、シャットダウン.vbsをダブルクリックして・・」
とやってもいいんですが、ちょっとめんどくさい。そこで、最初に作ったバッチファイルに「シャットダウンするvbsファイルを呼び出す」という処理を追記します。

ipconfig
pause

call C:Users¥(ファイルの場所)¥シャットダウン.vbs

保存したバッチファイルをデスクトップに置けばこれで完成です!

これで、付箋に書いてPCに貼るよりも確実に事故を防げるようになりました。

文系でも独学でも調べたらこれぐらは書けるぞ~~!と自信になりますね。

これからも、黒い画面を恐れずに色々調べながら事故防止と時短に努めようとおもいます~🔥

おまけ:アイコンを変える

デスクトップに置くとバッチファイルはこんなアイコンで表示されます。このままでも悪くはないのですが、
ついWindowsキーを押してシャットダウンしたくなる、その気持ちを抑えることが出来る「シャットダウン感」のあるものにしたい!笑

image block

ということで、アイコンを変えます!まずは「シャットダウン.bat」のショートカットを作ります。

作ったショートカットにカーソルを合わせて右クリックし、プロパティを開きます。すると、アイコンの変更というのが出てくるのでそこをクリック。

image block
image block

上記のように画像一覧が出てくるので、いかにもシャットダウンできそうな赤い電源ボタンに変えました。見やすさってとっても大事!