जवाबों:
यह मूल स्रोत था, लेकिन अब यह 404 है:
उन्होंने (विंडोज़ प्रबंधन इंटरफ़ेस कमांड) WMIC का उपयोग करने का सुझाव दिया है जो विंडोज़ पर उपलब्ध है:
WMIC /NODE: xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME
वर्तमान में xxx.xxx.xxx.xxx, या में लॉग इन किया हुआ उपयोगकर्ता नाम लौटा देगा
WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME
वर्तमान में "वर्कस्टेशन_नाम" में लॉग इन उपयोगकर्ता नाम लौटाएगा
अद्यतन: यह विंडोज 10 पर भी काम करना चाहिए - यदि आप रिमोट मशीन पर एक व्यवस्थापक हैं।
क्षमा करें, ध्यान नहीं दिया कि आप Sysinternals का उपयोग नहीं करना चाहते हैं।
यह अब एक Microsoft तकनीकी उपकरण है, इसका उपयोग न करने का कोई विशेष कारण?
मैंने मार्क रोसिनोविच के माइक्रोसॉफ्ट में चले जाने से पहले अन्य तीसरे पक्ष के टूल पर सिसिन्टर्नल्स को प्राथमिकता दी है ।
माइक्रोसॉफ्ट Sysinternals सुइट एक उपकरण कहा जाता है Psloggedon ,
psloggedon.exe -l
NBTSTAT भी है ,
nbtstat -a NetBIOS-Computer-NAme
WMIC
स्वीकृत उत्तर में शिकायत की गई कि RPC नहीं चल रही थी। यह कीड़े की एक नई इच्छा है जिसे मैं अभी खोलने का मन नहीं कर रहा हूँ, इसलिए मैंने भजन में जाँच की और मैं काफी खुश हूँ।
मैंने win32_loggedonuser का उपयोग किया है, लेकिन एक ऐसे मुद्दे पर भाग गया है जहाँ एक से अधिक डोमेन उपयोगकर्ता को लौटाया गया था, इसलिए यह मेरे उद्देश्यों के लिए काम नहीं करता था। इसके बजाय मैंने प्रयोग किया (शक्तियां में)
#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
}
अगर कभी-कभी गेटऑनर किसी कारण से एक से अधिक उपयोगकर्ता को रिपोर्ट करेगा, तो पता नहीं क्यों लेकिन मेरे मामले में यह एक ही उपयोगकर्ता था इसलिए यह एक मुद्दा नहीं था।
आप इस जानकारी को 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
UserName
" और कुछ भी सूचीबद्ध नहीं होने के बावजूद, मैं उस मशीन में लॉग-इन कर रहा हूं।