👌

RDP接続/切断をSlackに通知する

2022/11/16に公開

リモートディスクトップの接続/切断をSlackに通知

概要

共有のWindows PC(10)へ、リモートディスクトップ接続を行う場合に

先に利用している人がいるとセッションを奪ってしまうので、

接続/切断時にSlackへ通知出来るようにしてみた。

Slackの設定

Incoming Webhookを追加

通知を行うチャンネルにIncoming Webhookを追加する。

追加後に表示されるWebhook URLをコピーしておく。

https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-での-Incoming-Webhook-の利用#incoming-webhook-u12398u35373u23450

スクリプト作成(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