यह कैसे जांचें कि वर्तमान में कमांड लाइन से विंडोज़ वर्कस्टेशन पर कौन लॉग ऑन है?


37

पर्यावरण डोमेन में है, सर्वर विंडोज सर्वर 2003 है, वर्कस्टेशन में विस्टा और एक्सपी स्थापित है।
मुझे दूरस्थ रूप से जांचने के तरीके की आवश्यकता है, जो वर्तमान में कार्य केंद्र पर लॉग ऑन है, अधिमानतः कुछ सरल कमांड लाइन से और बिना sysinternals या तीसरे पक्ष के कार्यक्रमों से।

धन्यवाद

जवाबों:


47

यह मूल स्रोत था, लेकिन अब यह 404 है:

उन्होंने (विंडोज़ प्रबंधन इंटरफ़ेस कमांड) WMIC का उपयोग करने का सुझाव दिया है जो विंडोज़ पर उपलब्ध है:

WMIC /NODE: xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME 

वर्तमान में xxx.xxx.xxx.xxx, या में लॉग इन किया हुआ उपयोगकर्ता नाम लौटा देगा

WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME 

वर्तमान में "वर्कस्टेशन_नाम" में लॉग इन उपयोगकर्ता नाम लौटाएगा

अद्यतन: यह विंडोज 10 पर भी काम करना चाहिए - यदि आप रिमोट मशीन पर एक व्यवस्थापक हैं।


जब मैं इस कमांड को दूरस्थ रूप से या स्थानीय रूप से चलाता हूं, तो मुझे आउटपुट की एक ही लाइन मिलती है " UserName" और कुछ भी सूचीबद्ध नहीं होने के बावजूद, मैं उस मशीन में लॉग-इन कर रहा हूं।
दाई

@Dai क्या आप XP या Vista या 2003 का उपयोग कर रहे हैं? यह प्रश्न उन ओएस के लिए था
प्रीत संघ

17

क्षमा करें, ध्यान नहीं दिया कि आप Sysinternals का उपयोग नहीं करना चाहते हैं।
यह अब एक Microsoft तकनीकी उपकरण है, इसका उपयोग न करने का कोई विशेष कारण?
मैंने मार्क रोसिनोविच के माइक्रोसॉफ्ट में चले जाने से पहले अन्य तीसरे पक्ष के टूल पर सिसिन्टर्नल्स को प्राथमिकता दी है ।


माइक्रोसॉफ्ट Sysinternals सुइट एक उपकरण कहा जाता है Psloggedon ,

psloggedon.exe -l

NBTSTAT भी है ,

nbtstat -a NetBIOS-Computer-NAme

3
sysinternals सिर्फ व्यवसाय है। मुझे आशा है कि उन्होंने मार्क को वहां जाने के लिए एक टन का भुगतान किया, वर्तमान में उन्होंने उसे वह अच्छा काम करने से रोका जो वह पहले कर रहा था और अब भी जारी है।
gbjbaanb

@ जीबीजैनब, मुझे इस बात की खुशी है। आशा है कि वह अपडेट करता रहे और सुइट में शामिल होता रहे।
निक

1
इसने मेरे लिए अद्भुत काम किया, जबकि WMICस्वीकृत उत्तर में शिकायत की गई कि RPC नहीं चल रही थी। यह कीड़े की एक नई इच्छा है जिसे मैं अभी खोलने का मन नहीं कर रहा हूँ, इसलिए मैंने भजन में जाँच की और मैं काफी खुश हूँ।
माइक एस

12

मैंने 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
}

अगर कभी-कभी गेटऑनर किसी कारण से एक से अधिक उपयोगकर्ता को रिपोर्ट करेगा, तो पता नहीं क्यों लेकिन मेरे मामले में यह एक ही उपयोगकर्ता था इसलिए यह एक मुद्दा नहीं था।


2
कारण यह है कि एक से अधिक उपयोगकर्ता लॉग इन हो सकते हैं। फास्ट यूजर स्विचिंग आदि को वर्षों पहले पेश किया गया था। I) t दूसरे उपयोगकर्ता को लॉग ऑन रखता है।
टॉमटॉम

Good Point @TomTom, मैं इस बारे में भूल गया था, मुझे लगता है कि [win32_loggedonuser] भी किसी को भी लौटा देगा जो psexec'd या powerhell'd के रूप में अच्छी तरह से।
MDMoore313

6

आप इस जानकारी को 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.