👌
RDP接続/切断をSlackに通知する
リモートディスクトップの接続/切断をSlackに通知
概要
共有のWindows PC(10)へ、リモートディスクトップ接続を行う場合に
先に利用している人がいるとセッションを奪ってしまうので、
接続/切断時にSlackへ通知出来るようにしてみた。
Slackの設定
Incoming Webhookを追加
通知を行うチャンネルにIncoming Webhook
を追加する。
追加後に表示されるWebhook URL
をコピーしておく。
スクリプト作成(powershell)
接続時用
接続時の通知を行うスクリプト(ConnectionNotification.ps1)を作成する。
<チャンネルID>
はSlackのチャンネルを選択しチェンネルの詳細を表示する
から確認出来る。
# RDP接続IPアドレス取得
$result = netstat -np TCP | Select-String "3389"
if ( ${result} -match "TCP +\d+\.\d+\.\d+\.\d+:3389 +(\d+\.\d+\.\d+\.\d+):.+ESTABLISHED") {
$ip_address = ":computer: 接続IP:" + $Matches[1]
}
#モジュールの読み込み
Add-Type -AssemblyName System.Web
#メッセージ送信用BODYの作成
$msg=":bulb: 接続 --使用中--\n${ip_address}"
$body_base='payload={"channel": "<チャンネルID>", "username": "incoming-webhook", "text": "@msg-body@", "icon_emoji": ":ghost:"}'
$msg_body=$body_base.replace("@msg-body@",[System.Web.HttpUtility]::UrlEncode($msg))
#メッセージの送信
Invoke-WebRequest -Method POST -Body $msg_body -uri "<Webhook URL>"
powershell実行するbatファイル(ConnectionNotification.bat)を作成。
@echo off
cd /d %~dp0
@powershell -Command "Start-Process powershell.exe -ArgumentList C:\SlackNotification\ConnectionNotification.ps1 -Verb runas"
exit
切断時用
切断時の通知を行うスクリプト(DisconnectionNotification.ps1)を作成する。
<チャンネルID>
はSlackのチャンネルを選択しチェンネルの詳細を表示する
から確認出来る。
#モジュールの読み込み
Add-Type -AssemblyName System.Web
#メッセージ送信用BODYの作成
$msg=":zzz: 切断"
$body_base='payload={"channel": "<チャンネルID>", "username": "incoming-webhook", "text": "@msg-body@", "icon_emoji": ":ghost:"}'
$msg_body=$body_base.replace("@msg-body@",[System.Web.HttpUtility]::UrlEncode($msg))
#メッセージの送信
Invoke-WebRequest -Method POST -Body $msg_body -uri "<Webhook URL>"
powershell実行するbatファイル(DisconnectionNotification.bat)を作成。
@echo off
cd /d %~dp0
@powershell -Command "Start-Process powershell.exe -ArgumentList C:\SlackNotification\DisconnectionNotification.ps1 -Verb runas"
exit
RDP接続先PCの設定
タスクスケジューラの設定
新しいタスクの作成
接続用/切断用の通知を行うタスクを追加する。
切断用のタスクは接続用と同じ手順なので省略。
全般
- 名前:任意の名前を入力
- 説明;任意
- ユーザーがログオンしているかどうかにかかわらず実行する:有効
- 最上位の特権で実行する:有効
- 構成:Windows 10を選択
トリガー
「新規」ボタンを押下しトリガーの追加を行う。
- タスクの開始:ユーザーセッションへの接続時を選択
操作
「新規」ボタンを押下し操作の追加を行う。
プログラム/スクリプトに作成したConnectionNotification.bat
を設定する。
OK
ボタンを押下して、タスクの作成を完了する。
通知
RDP接続/切断を行うとこんな感じで通知される。
接続
切断
これで、利用中か分かりやすくなった。
Discussion