環境はドメイン内にあり、サーバーはWindows Server 2003、ワークステーションにはVistaがあり、XPがインストールされています。
ワークステーションに現在ログオンしているユーザーをリモートで確認する方法が必要です。できれば、単純なコマンドラインから、sysinternalsやサードパーティのプログラムを使用せずに確認できます。
ありがとう
これは 元のソース でしたが、現在は404です。
彼らは、Windowsで利用可能な(Windows Management Interface Command)WMICの使用を提案しました。
WMIC /NODE: xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME
現在xxx.xxx.xxx.xxxにログインしているユーザー名を返します、または
WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME
現在「workstation_name」にログインしているユーザー名を返します
更新:これはWindows 10でも機能するはずです-リモートマシンの管理者である場合。
申し訳ありませんが、Sysinternalsを使用したくないことに気づきませんでした。
これは現在Microsoft technetツールですが、使用しない特定の理由はありますか?
以前に他のサードパーティツールよりもSysinternalsを優先したことがある マーク・ルシノビッチ マイクロソフトに移動しました。
Microsoft Sysinternals Suiteには Psloggedon というツールがあります。
psloggedon.exe -l
[〜#〜] nbtstat [〜#〜] もあり、
nbtstat -a NetBIOS-Computer-NAme
私はwin32_loggedonuserを使用しましたが、-複数のドメインユーザーが返されるという問題に遭遇したため、私の目的では機能しませんでした。代わりに(powershellで)使用しました
#Get Currently logged in user
$ExplorerProcess = gwmi win32_process | where name -Match Explorer
if($ExplorerProcess.getowner().user.count -gt 1){
$LoggedOnUser = $ExplorerProcess.getowner().user[0]
}
else{
$LoggedOnUser = $ExplorerProcess.getowner().user
}
ifは、何らかの理由でgetownerが複数のユーザーを報告する場合があるためです。理由はわかりませんが、私の場合は同じユーザーであり、問題ではありませんでした。
この情報はwin32_loggedonuserから取得できます。
このページ から:
strComputer = "." ' " use "." for local computer
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colSessions = objWMI.ExecQuery _
("Select * from Win32_LogonSession Where LogonType = 2 OR LogonType = 10")
If colSessions.Count = 0 Then
Wscript.Echo "No interactive users found"
Else
For Each objSession in colSessions
If objSession.LogonType = 2 Then
WScript.Echo "Logon type: Console"
Else
WScript.Echo "Logon type: RDP/Terminal Server"
End If
Set colList = objWMI.ExecQuery("Associators of " _
& "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _
& "Where AssocClass=Win32_LoggedOnUser Role=Dependent" )
For Each objItem in colList
WScript.Echo "User: " & objItem.Name
WScript.Echo "FullName: " & objItem.FullName
WScript.Echo "Domain: " & objItem.Domain
Next
Wscript.Echo "Session start time: " & objSession.StartTime
WScript.Echo
Next
End If