अक्सर एक व्यवस्थापक को दूरस्थ विंडोज कंप्यूटर पर लॉग इन किए गए उपयोगकर्ता नाम का तुरंत पता लगाने की आवश्यकता होती है। इस लेख में, हम कुछ टूल और पावरशेल स्क्रिप्ट दिखाएंगे जो दूरस्थ कंप्यूटर पर लॉग इन किए गए उपयोगकर्ताओं के नाम प्राप्त करने में आपकी सहायता कर सकते हैं।
सामग्री:
- PSLoggedOn और Qwinsta के साथ लॉग इन किए हुए उपयोगकर्ताओं की जांच करें
- PowerShell का उपयोग करके दूरस्थ कंप्यूटर पर वर्तमान उपयोगकर्ता को कैसे प्राप्त करें?
- दूरस्थ कंप्यूटर पर लॉग ऑन उपयोगकर्ताओं को खोजने के लिए पावरशेल स्क्रिप्ट
PSLoggedOn और Qwinsta के साथ लॉग इन किए हुए उपयोगकर्ताओं की जांच करें
Microsoft के SysInternals PSTools में एक कंसोल उपयोगिता शामिल है जिसे PSLoggedOn.exe कहा जाता है। जिसका उपयोग उस उपयोगकर्ता का नाम प्राप्त करने के लिए किया जा सकता है जो किसी दूरस्थ कंप्यूटर में लॉग इन है, साथ ही इससे जुड़े SMB सत्रों की सूची भी है।
टूल डाउनलोड करें और इसे चलाएं:
psloggedon \\RemoteCompName
जैसा कि आप देख सकते हैं, टूल ने लॉग-ऑन उपयोगकर्ता का नाम लौटा दिया (स्थानीय रूप से लॉग इन किए गए उपयोगकर्ता ) और नेटवर्क पर इस कंप्यूटर के एसएमबी संसाधनों तक पहुंचने वाले उपयोगकर्ताओं की सूची (संसाधन शेयरों के माध्यम से लॉग ऑन किए गए उपयोगकर्ता )।
यदि आप केवल स्थानीय रूप से लॉग ऑन किए गए उपयोगकर्ता का नाम प्राप्त करना चाहते हैं, तो -l . का उपयोग करें विकल्प:
Psloggedon.exe \\pc1215wks1 –l
PSLoggedOn रजिस्ट्री से जुड़ता है और स्थानीय रूप से लॉग ऑन किए गए उपयोगकर्ता के नाम की जाँच करता है। ऐसा करने के लिए, RemoteRegistry सेवा चल रही होनी चाहिए। आप PowerShell का उपयोग करके स्वचालित सेवा स्टार्टअप को चला और कॉन्फ़िगर कर सकते हैं:
Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry
आप बिल्ट-इन qwinsta
. का उपयोग करके दूरस्थ कंप्यूटर पर सत्रों की सूची भी प्राप्त कर सकते हैं उपकरण। रिमोट डेस्कटॉप सर्विसेज (आरडीएस) टर्मिनल वातावरण का प्रबंधन करने वाले किसी भी व्यवस्थापक से यह उपकरण परिचित होना चाहिए। दूरस्थ कंप्यूटर से लॉग किए गए उपयोगकर्ता सत्रों की सूची प्राप्त करने के लिए, कमांड चलाएँ:
qwinsta /server:be-rdsh01
यह टूल किसी RDS सर्वर पर या डेस्कटॉप Windows 10 (11) संस्करण (भले ही आपने इसके लिए एकाधिक RDP कनेक्शन की अनुमति दी हो) पर सभी सत्रों (एक RDP टाइमआउट द्वारा सक्रिय और डिस्कनेक्ट किया गया) की एक सूची लौटाता है।
अगर आपको त्रुटि 5 पहुंच अस्वीकृत मिलती है qwinsta का उपयोग करके किसी दूरस्थ सर्वर से कनेक्ट करने का प्रयास करते समय, सुनिश्चित करें कि दूरस्थ होस्ट को RPC के माध्यम से उपयोगकर्ताओं को दूरस्थ रूप से प्रबंधित करने की अनुमति है। यदि आवश्यक हो, तो इसे निम्न आदेश का उपयोग करके या GPO का उपयोग करके रजिस्ट्री में सक्षम करें:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v "AllowRemoteRPC" /t "REG_DWORD" /d "1" /f
जोड़ें
PowerShell का उपयोग करके दूरस्थ कंप्यूटर पर वर्तमान उपयोगकर्ता को कैसे प्राप्त करें?
आप Win32_ComputerSystem का उपयोग करके कंप्यूटर पर लॉग इन किए गए उपयोगकर्ता का नाम प्राप्त कर सकते हैं डब्ल्यूएमआई वर्ग। पावरशेल कंसोल खोलें और कमांड चलाएँ:
Get-WmiObject -class Win32_ComputerSystem | Format-List Username
कमांड कंप्यूटर पर लॉग इन किए गए उपयोगकर्ता का नाम देता है।
Get-WmiObject cmdlet में –ComputerName . है विकल्प का उपयोग आप दूरस्थ कंप्यूटर पर WMI ऑब्जेक्ट्स तक पहुँचने के लिए कर सकते हैं। निम्न आदेश दूरस्थ कंप्यूटर से लॉग-इन उपयोगकर्ता नाम लौटाएगा:
(Get-WmiObject -class Win32_ComputerSystem –ComputerName pc1215wks1).Username
कमांड केवल उपयोगकर्ता को कंसोल पर लॉग ऑन दिखाता है (आरडीपी के माध्यम से नहीं)।
Invoke-Command cmdlet के साथ दूरस्थ कंप्यूटर से जानकारी प्राप्त करने के लिए आप PSRemoting का भी उपयोग कर सकते हैं।आप दूरस्थ कंप्यूटर पर केवल उपयोगकर्ता नाम प्राप्त कर सकते हैं (बिना डोमेन के), इन आदेशों का उपयोग करें:
$userinfo = Get-WmiObject -ComputerName pc1215wks1 -Class Win32_ComputerSystem
$user = $userinfo.UserName -split '\\'
$user[1]
Get-CimInstance –ComputerName pc1215wks1 –ClassName Win32_ComputerSystem | Select-Object UserName
या:
(Get-CimInstance -ComputerName pc1215wks1 -ClassName Win32_ComputerSystem).CimInstanceProperties | where{$_.Name -like "UserName"}| select value
GetCiminstance दूरस्थ कंप्यूटर से कनेक्ट करने के लिए WinRM का उपयोग करता है ताकि आपको GPO या निम्न कमांड का उपयोग करके उन पर WinRM को सक्षम और कॉन्फ़िगर करना पड़े:
WinRM quickconfig
दूरस्थ कंप्यूटर पर लॉग ऑन उपयोगकर्ता ढूंढने के लिए PowerShell स्क्रिप्ट
यदि आप एकाधिक कंप्यूटरों से लॉग-इन किए गए उपयोगकर्ताओं के बारे में जानकारी एकत्र करना चाहते हैं, तो आप उपयोगकर्ता नाम प्राप्त करने के लिए निम्न पावरशेल फ़ंक्शन का उपयोग कर सकते हैं।
function Get-LoggedUser { [CmdletBinding()] param ( [string[]]$ComputerName ) foreach ($comp in $ComputerName) { $output = @{'Computer' = $comp } $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName [PSCustomObject]$output } }
Get-LoggedUser के साथ उन कंप्यूटरों के नाम निर्दिष्ट करें जिन पर आप उपयोगकर्ता नाम जांचना चाहते हैं:
Get-LoggedUser pc1215wks1,pc1215wks2,mun-dc01
यदि फ़ंक्शन कंप्यूटर के लिए एक खाली उपयोगकर्ता नाम देता है, तो इसका मतलब है कि कोई भी लॉग ऑन नहीं है।
आप एक सक्रिय निर्देशिका डोमेन में कंप्यूटर पर लॉग इन किए गए उपयोगकर्ताओं के नाम प्राप्त कर सकते हैं। डोमेन में कंप्यूटरों की सूची प्राप्त करने के लिए Get-ADComputer cmdlet का उपयोग करें। नीचे दिए गए उदाहरण में, हम विशिष्ट डोमेन OU में सक्रिय कंप्यूटरों पर लॉग इन किए गए उपयोगकर्ता नाम प्राप्त करेंगे। दूरस्थ कंप्यूटर तक पहुँचने से पहले स्क्रिप्ट को तेज़ी से काम करने के लिए, मैंने ICMP पिंग और टेस्ट-नेटकनेक्शन cmdlet का उपयोग करके इसकी उपलब्धता की जाँच जोड़ी:
function Get-LoggedUser { [CmdletBinding()] param ( [string[]]$ComputerName ) foreach ($comp in $ComputerName) { if ((Test-NetConnection $comp -WarningAction SilentlyContinue).PingSucceeded -eq $true) { $output = @{'Computer' = $comp } $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName } else { $output = @{'Computer' = $comp } $output.UserName = "offline" } [PSCustomObject]$output } } $computers = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=Berlin,DC=woshub,DC=com').Name Get-LoggedUser $computers |ft -AutoSize
साथ ही, ध्यान दें कि आप AD में कंप्यूटर के गुणों में लॉग-ऑन उपयोगकर्ता का नाम संग्रहीत कर सकते हैं। ऐसा करने के लिए, आप "सेट-एडीकंप्यूटर:एडी कंप्यूटर गुणों में उपयोगकर्ता जानकारी कैसे जोड़ें" लेख में वर्णित लॉगऑन स्क्रिप्ट का उपयोग कर सकते हैं।
उसके बाद, आपको यह पता लगाने के लिए सभी कंप्यूटरों को स्कैन करने की आवश्यकता नहीं है कि कोई विशिष्ट उपयोगकर्ता कहाँ लॉग ऑन है। आप सक्रिय निर्देशिका के लिए एक साधारण क्वेरी का उपयोग करके एक उपयोगकर्ता कंप्यूटर ढूंढ सकते हैं:
$user='m.smith'
. चुनें
$user_cn=(Get-ADuser $user -properties *).DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft