開発お友達から従業員が出勤してるか確認する方法何かない?との相談があったのでちょっと考えてみた。出勤時間になっても誰も出勤していない場合、それが外から分かるようにして欲しい平日は13:00、土日は9:30あと、なるべく業務が増えるのは避けたいなるほどなるほど。日常業務の中で勝手に機能している感じにしてみよう。システム要件タスクスケジューラでログインチェックツールを起動し、時間になってもPCにログインされていない場合に複数の宛先へメール送信するログインチェック機能メール送信機能こんな感じかな。業務でパソコン使うので出勤したら意識しなくてもPCにはログインするはず。次はこれを実現するための条件を考えよう。条件PCが起動していないとチェック用のスクリプトが実行出来ない。あと、メール送信はCDOを使いたい。各店舗に行ってBIOSとタスクスケジューラの設定が出来る人はい、遠くまでは行きたくないです。設定方法だけ伝えて頑張ってもらいます。あとはBIOSの機能もあるっぽいしメールはGmailがあるそうなので多分条件クリア。CDOを使う事については個人的なわがままです。検証が終わっているので(笑)しかし、CDOだとTLS/STARTTLS認証は使えないっぽいので、SSL/TLS認証の我らがGmail先生にメール届けてもらう事にするざます。いう事でスクリプト書いてみよー。前に投稿したVBSでメール送るやつを使います。VBScriptでメール送信(Gmail)ちょっと長いけどいちお貼り付けておこう。"出勤確認が取れませんでした。"引数が正しく指定されなかった為、処理を中止しました。_"m、d、cのいずれか1つを指定して下さい。"予期しないエラーが発生しました。NothingWScript.Quitダウンロードはい、完成。引数によって処理が変わります。チェック用ファイルがなければメール送信コマンドプロンプトでこんな感じで実行します。誰も出勤してこなくて、2番の処理が行われなければメール送信される仕組み。ほんとはチェック処理に環境変数かレジストリ使おうと思ってたんだけど、なんか権限の関係でうまくいかんかったのでとりあえずファイルの有無で判定。エラー◆ってか、今気づいたんだけどイベントビュアーって標準のプリントスクリーンだとキャプチャ取れないんだ!!え、もしかして常識?まあ、とりあえず置いといて次にタスクの登録です。タスクスケジューラに登録そしてタスクスケジューラもプリントスクリーン出来ないし!マジですかではタスクスケジューラにタスクを3つ登録していくよーチェック用ファイル作成タスク名:MakeFile引数:mトリガー:ログイン時に起動チェック用ファイル削除タスク名:DelFile引数:dトリガー:パソコン起動時と毎日6:00に実行チェック用ファイルがなければメール送信タスク名:Check引数:cトリガー:平日の13:00と土日の9:30に実行Cドライブ直下に「CheckGoToWork」フォルダがあってその中に「CheckGoToWork.vbs」スクリプトがあるのを前提に説明します。《停止するまでの時間》にチェックを入れ「5」を入力し【OK】をクリックログオン時のトリガーが出来ました。次は[操作]タブに行きます。m」と入力し【OK】をクリック「操作」が作られました。次は[条件]タブに進みます。《タスクが既に実行中の場合に適用される規則》にて「既存のインスタンスの停止」を選択し【OK】をクリック「MakeFile」タスクが登録されました。同じようにして「DelFile」「Check」タスクを登録していきます。[トリガー][操作]タブ以外は共通なので省略します。《停止するまでの時間》にチェックを入れ「5」を入力し【OK】をクリックあと、PCのシャットダウンを忘れて帰った時用に毎朝6時にも動くようにしておきます。《停止するまでの時間》にチェックを入れ「5」を入力し【OK】をクリック「システム起動時」と「毎日6:00」に実行されるようになりました。次は[操作]タブに行きます。d」と入力し【OK】をクリック「操作」が作られました。[全般][条件][設定]タブは「MakeFile」タスクと同じです。《停止するまでの時間》にチェックを入れ「5」を入力し【OK】をクリック平日用と土日用のトリガーが出来ました。次は[操作]タブに行きます。c」と入力し【OK】をクリック「操作」が作られました。[全般][条件][設定]タブは「MakeFile」タスクと同じです。登録したタスクの確認これでタスクスケジューラに3つとも登録されました。同じような設定を何度も行う作業やってると、やっぱGUIってめんどいわーと思ってコマンドからタスク操作する方法ないか調べたらいくつかあったし!中でもPowerShellのScheduledTaskはかなり使えそうな感じだけど、なぜかトリガー設定用のNew-ScheduledTaskTriggerがこけるこける。原因調べてたら、コミュニティーで環境依存っぽいってなってたのでとりあえず今回は見送った。V3.0以前のバージョンは標準搭載じゃないらしいし、各店舗のPCがこのコマンド使える環境か分からんので深追いするのはやめておこう。PowerShellって今まであんま触った事ないけど中々使い勝手は良さそうに感じるので、これからちょいちょいイジっていきます。Hour]のトグルで「9」を選べば『毎日9:00に起動』するように設定出来ました大概は「電源」メニューの「WakeUpなんちゃら」とか「PowerOnなんちゃら」で設定出来ると思うので、毎日9時に起動するようにしておきましょう。終わりに本当は祝日も対応してないとだけどなー、めんどい(笑)またなんかカレンダー的なプログラム書く事があったらその時にこっちも対応させよう。事で長々と書きましたが、まだ実際に導入はしていないのでこれでうまくいくかは分からんざますのことよ(笑)いちお導入したらまた追記します。普段から分からん事あったらすぐ検索して知恵をお借りしまくっているので、今さらながら技術系Webサイトの作成者様に感謝です。2016/06/09導入したらやっぱり動かんかったーうちの環境だと普通に動くけど店舗のPCだとなぜかうまくいかなくて《タスクが既に実行中の場合に適用される規則》を「既存のインスタンスの停止」から「新しいインスタンスを並列で実行」に変えたら動くようになった、理由は謎あと、MakeFileだけトリガーの遅延時間を1分に設定しておいた。yossy関連記事VBScriptでメール送信(Gmail)VBScriptからメール送信する方法調べたら、CDOとやらを使えばいいらしい。コメントをキャンセルメールアドレスが公開されることはありません。