- PR -

現在ログインしてるユーザの取得方法について

1
投稿者投稿内容
yabetti
会議室デビュー日: 2004/01/08
投稿数: 19
投稿日時: 2004-01-09 01:43
はじめまして。
Windows 2000 Serverでわからない点がございますので、質問
させて下さい。

WindowsのActiveDirecotryネットワークで、現在サーバにログ
インしているユーザ一覧を取得したいのですが、どうすればいい
のでしょうか?
netコマンド等を調べましたがそれらしきものは見当たらず、Linux
でいうwhoコマンドのようなコマンドはないのでしょうか・・・

教えてください。
よろしくお願いいたします。
BASE
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 178
投稿日時: 2004-01-09 11:00
ども、BASEと申します。

nbtstat -A <IP>

ではダメですか?
yabetti
会議室デビュー日: 2004/01/08
投稿数: 19
投稿日時: 2004-01-09 11:52
返信ありがとうございます。

nbtstat -A IPですと、そのIPのマシンにログインしているユーザ
は分かりますが、ドメインのDCにログインしているユーザの
一覧を知りたいのです。
なにかいい方法はございませんでしょうか?
BASE
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 178
投稿日時: 2004-01-09 13:26
ども、BASEです。

んでは、DomainView--はいかがでしょう?
http://www.wackyfactory.net/domvw/

私自身はドメイン環境にいないのでなんですが、
項目にログオン中ユーザとかいうのもあります。
yabetti
会議室デビュー日: 2004/01/08
投稿数: 19
投稿日時: 2004-01-09 15:18
ありがとうございます!
このソフトでユーザ一覧を取得できました。

あと、このソフト上でコンピュータの情報一覧をログに保存できるんですが、
これを定期的にログファイルに落としたい場合はどうすればいいですか?
スクリプトか何かの書き方を教えてください。
お願いします!
VIM
ベテラン
会議室デビュー日: 2003/11/14
投稿数: 76
投稿日時: 2004-01-09 16:52
コード:
Call Main
Call WScript.Quit(0)

Sub Main
	Dim oComputers, oComputer
	Dim sLogonUserName, sComputerName

	Set oComputers = GetObject( "WinNT://" & CreateObject( "WScript.Network" ).UserDomain )
	oComputers.Filter = Array("Computer")
	For Each oComputer In oComputers
		sComputerName = CStr(oComputer.Name & "")
		If Ping(sComputerName) Then
			sLogonUserName = GetLogonUserName(sComputerName)
		Else
			sLogonUserName = ""
		End If
		WScript.Echo sComputerName & vbTab & sLogonUserName
	Next
End Sub

Function GetLogonUserName(sComputerName)
	Const SQL = "SELECT * FROM Win32_ComputerSystem"
	Set WMI = CreateObject("WbemScripting.SWbemLocator")
	Set Services = WMI.ConnectServer(sComputerName, "root/cimv2")
	GetLogonUserName = ""
	For Each Info In Services.ExecQuery(SQL)
		GetLogonUserName =  CStr(Info.UserName & "")
	Next
End Function

Function Ping(sComputerName)
	Const PING_CMD = "ping -n 1 -w 100 "
	Const PING_OK_STR = "Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),"
	Dim sCmdLine

	sCmdLine = PING_CMD & sComputerName
	Ping = CBool(InStr(CreateObject( "WScript.Shell" ).Exec( sCmdLine ).StdOut.ReadAll, PING_OK_STR))
End Function



だめだめ激重コードですが、よろしければどうぞ。
これをcscriptでタスクスケジューラーに放り込めばよいかと・・・。
エラー処理は仕掛けていないので、適当にどうぞ。
あと、DOMAIN_ADMIN権限じゃないと動かないっぽい。(ぉ
yabetti
会議室デビュー日: 2004/01/08
投稿数: 19
投稿日時: 2004-01-10 17:49
ありがとうございます!
なんとか一覧をしゅとくできましたが、たまにエラーで
とまってしまいます・・・(アクセス権限?)

すこし勉強し、改良したいと思います。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)