web-dev-qa-db-ja.com

リモートデスクトップクライアントのIPアドレスを取得するにはどうすればよいですか?また、RDP接続時にシェルコマンドをトリガーするにはどうすればよいですか?

サーバーでPowerShell(またはその他の方法)を使用してリモートデスクトップクライアントのIPアドレスを確認する方法はありますか? (Windows Server 2008 R2 x64を使用しています)

編集:私はnetstatのstdoutをgrepして非常に実行可能なこの情報を取得できることがわかりました。クライアントが接続したときにスクリプト/シェルコマンドをどのようにトリガーできますか?

23
chaz

さて、私はtask scheduler Windowsに付属のアプリケーションは、イベントログのイベントが生成されたときにトリガーされるバッチスクリプトを実行できるように構成できます。 UIを使用して、イベントタイプ、イベントソース、イベントIDを選択します。この場合、4264を使用しました(はい、すべてのログオンタイプをキャプチャします)。ここでは、代わりに単純なバッチスクリプトを使用しました。

SET logfile="rdp_ip_logs.log"
date /T>>%logfile%
time /T>>%logfile%
netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%

また、.NETでイベントの書き込みをサブスクライブ/リッスンする方法について、この非常に役立つ例を見つけました: http://msdn.Microsoft.com/en-us/library/bb552514(v = vs.90) .aspx Webベースの検査のために、特定のイベントをデータベースに書き込むために代わりにそれを使用することになります。

このソリューションの唯一の欠点は、リモートデスクトップサービスを有効にしていて、複数のユーザーが接続している場合、netstat出力でそれらを区別できないことです。

12
chaz

コマンドプロンプトから次のコマンドを実行して、RDP(ポート3389)に接続されているリモートIPのリストを取得できます。

netstat -n | find ":3389" | find "ESTABLISHED"

これは、PowerShellでスクリプト化できると確信しています(または単純な古いバッチファイルでも可能です)。興味があれば、明日の例を提供できます。

22
John Homer

スクリプトを記述する必要がない場合は、セキュリティイベントログでイベントID 4624を確認できます。次の行があります。

送信元ネットワークアドレス:192.168.xxx.xxx

5
Tamerz