Windowsでスクリプト書いてスケジューラ登録したときのメモ

投稿者: | 2017-03-02

ラボ内でサーバ(Windows機)が増えた関係で,そいつをリモートデスクトップ接続で操作しようと思いました.
サーバ機のリモートデスクトップ接続アクセス許可をして,サーバ機のIPアドレスを打ってやれば接続できるわけですが,今のところIPアドレスはDHCPで自動取得なため,毎回IPアドレス変わります.

そこで,サーバのログイン毎に自身のIPアドレスを調べて,僕のメールに送るという処理を作ってみました.
で,僕は以前仕事でWindowsのスクリプトはVBScriptというのを使っていたのですが,調べてみるとPowerShellというのがWindowsの次世代シェルで,スクリプトが書けるらしい.

Windows PowerShellコマンド&スクリプティング入門:PowerShellスクリプティングの第一歩(後編)

というわけでスクリプトを書く.

$username = “USERNAME”
$password = “PASSWORD”
$smtphost = “SMTPHOST”
$fromaddr = “FROM@MAILADDRESS”
$smtpport = 587
$toaddr = “TO@MAILADDRESS”
$ipconfig = ipconfig

$mail = New-Object System.Net.Mail.MailMessage
$mail.from = $fromaddr
$mail.to.Add($toaddr)
$mail.Subject = “MAILSUBJECT”
$mail.Body = “ServerXXがログインされました:” + $ipconfig

$sc = New-Object Net.Mail.SmtpClient($smtphost)
$Credentials = new-object System.Net.networkCredential($username, $password)

$sc.UseDefaultCredentials = $false;
$sc.EnableSsl = $true
$sc.Credentials=$Credentials
$sc.Port = 587
$sc.Timeout = 10000
$sc.Send($mail)

(参考:PowerShell でメール送信 | NYORO PRESS)

これだけではログイン毎に送信してくれないので,Windowsのスケジューラにこのスクリプトを登録しました.
注意したいのはタスクの作成時に
「プログラム/スクリプト」にPowerShellの実行ファイルのパス
「引数の追加」にスクリプトファイル名
「開始」にスクリプトファイルのパス
と書くところです.

WindowsのタスクスケジューラーでPowerShellのスクリプトを実行する際には「パス」に注意 – @IT

以上.

参考:
Windows PowerShellコマンド&スクリプティング入門:PowerShellスクリプティングの第一歩(後編) (1/5) – @IT
PowerShell でメール送信 | NYORO PRESS
PowerShellでメール送信 – Qiita
Tech TIPS:タスクスケジューラの基本的な使い方(Windows 7/8.x/10編) (1/2) – @IT
Tech TIPS:WindowsのタスクスケジューラーでPowerShellのスクリプトを実行する際には「パス」に注意 – @IT

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です