web-dev-qa-db-ja.com

コマンドラインから現在Windowsワークステーションにログオンしているユーザーを確認する方法

環境はドメイン内にあり、サーバーはWindows Server 2003、ワークステーションにはVistaがあり、XPがインストールされています。
ワークステーションに現在ログオンしているユーザーをリモートで確認する方法が必要です。できれば、単純なコマンドラインから、sysinternalsやサードパーティのプログラムを使用せずに確認できます。

ありがとう

37
Andrija

これは 元のソース でしたが、現在は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でも機能するはずです-リモートマシンの管理者である場合。

47
Preet Sangha

申し訳ありませんが、Sysinternalsを使用したくないことに気づきませんでした。
これは現在Microsoft technetツールですが、使用しない特定の理由はありますか?
以前に他のサードパーティツールよりもSysinternalsを優先したことがある マーク・ルシノビッチ マイクロソフトに移動しました。


Microsoft Sysinternals Suiteには Psloggedon というツールがあります。

psloggedon.exe -l

[〜#〜] nbtstat [〜#〜] もあり、

nbtstat -a NetBIOS-Computer-NAme
17
nik

私は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が複数のユーザーを報告する場合があるためです。理由はわかりませんが、私の場合は同じユーザーであり、問​​題ではありませんでした。

12
MDMoore313

この情報は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
6
HK_