2012-04-20 8 views
1

私はリモートでサーバにログインしているユーザを監視するvbsスクリプトを持っています "qwinsta"を使ってユーザ名を取得しています。接続されたWindows RDPユーザーのIPまたはホスト名を取得する方法は?

しかし、qwinstaはリモートユーザのホスト名またはIPアドレスを返しません。私は午前中に検索し、ユーザ名またはセッションIDに基づいて接続されたユーザのIP /ホストを取得するためのcmdコマンドまたはwmiコマンドを見つけることができません。

誰にもこの情報を得るための他のアイデアはありますか? IPアドレス:http://home.fnal.gov/~jklemenc/tslistusers.htmlを与えるこの外部ユーティリティが見つかりましたが、私はむしろ外部プログラムを使用しませんでした。私はそれが何らかのwmiまたは他の方法を使用して私が自分のスクリプトの中で何とかできるipaddressを取得していると仮定します。

私はnetstatとfilter port 3389を使ってRDPセッションだけを取得し、そのようにIPを取得できることは知っていますが、どのIPがどのポイントに属しているのかを知る方法はありません。

答えて

1

この情報は、(主に)文書化されていないAPI WinStationQueryInformationWを介して公開されています。私が知る限り、WMIやコマンドラインユーティリティ、COMオブジェクトからは公開されません。

あなたは.NET言語を使用することができる場合、あなたは、Win32 API呼び出しを処理するためにCassia libraryを使用することができます - ITerminalServicesSession.RemoteEndPoint(ゲストとしてログインして、最新のトランクのビルドhereをダウンロード)を参照してください。 Vsscript using tlbexp and regasmのCassiaを使用することは可能ですが、まだ試していません。

1

以下のコードをバッチファイルで使用して、ホスト名のテキストファイルを配列に渡し、rdpセッション情報を問い合わせることができます。 (Server_List.txtファイルがバッチファイルの横にあることを確認してください作成)

@echo off 
setlocal EnableDelayedExpansion 
echo RDPSessionINFO > ./results.txt 
echo ============== >> ./results.txt 

set i=0 
for /F %%a in (Server_List.txt) do (
    set /A i+=1 
    set array[!i!]=%%a 
) 
set n=%i% 

for /L %%i in (1,1,%n%) do echo !array[%%i]! >> ./results.txt && qwinsta /server:!array[%%i]!>> ./results.txt && echo =================== >> ./results.txt 

start notepad.exe ./results.txt 
関連する問題