প্রায়শই একজন প্রশাসককে দূরবর্তী উইন্ডোজ কম্পিউটারে লগ করা ব্যবহারকারীর নামটি দ্রুত খুঁজে বের করতে হয়। এই নিবন্ধে, আমরা কিছু টুল এবং PowerShell স্ক্রিপ্ট দেখাব যা আপনাকে দূরবর্তী কম্পিউটারে লগ করা ব্যবহারকারীদের নাম পেতে সাহায্য করতে পারে।
বিষয়বস্তু:
- PSloggedOn এবং Qwinsta-এর সাথে লগ ইন করা ব্যবহারকারীদের চেক করুন
- কিভাবে PowerShell ব্যবহার করে রিমোট কম্পিউটারে বর্তমান ব্যবহারকারীকে পেতে হয়?
- পাওয়ারশেল স্ক্রিপ্ট রিমোট কম্পিউটারে লগ-ইন করা ব্যবহারকারীদের খুঁজে পেতে
PSLloggedOn এবং Qwinsta এর সাথে লগ ইন করা ব্যবহারকারীদের চেক করুন
Microsoft-এর SysInternals PSTools-এ PSLoggedOn.exe নামে একটি কনসোল ইউটিলিটি রয়েছে এটি একটি দূরবর্তী কম্পিউটারে লগ ইন করা ব্যবহারকারীর নাম, সেইসাথে এটির সাথে সংযুক্ত SMB সেশনগুলির একটি তালিকা পেতে ব্যবহার করা যেতে পারে৷
টুল ডাউনলোড করুন এবং এটি চালান:
psloggedon \\RemoteCompName
আপনি দেখতে পাচ্ছেন, টুলটি লগ-অন করা ব্যবহারকারীর নাম ফেরত দিয়েছে (ব্যবহারকারীরা স্থানীয়ভাবে লগ অন করেছেন ) এবং ব্যবহারকারীদের একটি তালিকা যারা নেটওয়ার্কের মাধ্যমে এই কম্পিউটারের এসএমবি সংস্থানগুলি অ্যাক্সেস করে (সম্পদ শেয়ারের মাধ্যমে ব্যবহারকারীরা লগ ইন করেছেন )।
আপনি যদি স্থানীয়ভাবে লগ ইন করা ব্যবহারকারীর শুধুমাত্র নাম পেতে চান, তাহলে -l ব্যবহার করুন বিকল্প:
Psloggedon.exe \\pc1215wks1 –l
PSLoggedOn রেজিস্ট্রির সাথে সংযোগ করে এবং স্থানীয়ভাবে লগ-ইন করা ব্যবহারকারীর নাম চেক করে। এটি করতে, রিমোটরেজিস্ট্রি পরিষেবা চালু হতে হবে। আপনি PowerShell: ব্যবহার করে স্বয়ংক্রিয় পরিষেবা স্টার্টআপ চালাতে এবং কনফিগার করতে পারেন
Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry
আপনি বিল্ট-ইন qwinsta
ব্যবহার করে দূরবর্তী কম্পিউটারে সেশনের একটি তালিকাও পেতে পারেন টুল. এই টুলটি রিমোট ডেস্কটপ সার্ভিসেস (RDS) টার্মিনাল এনভায়রনমেন্ট পরিচালনাকারী যেকোনো প্রশাসকের সাথে পরিচিত হওয়া উচিত। একটি দূরবর্তী কম্পিউটার থেকে লগ করা ব্যবহারকারীর সেশনের একটি তালিকা পেতে, কমান্ডটি চালান:
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 ব্যবহার করে কম্পিউটারে লগ ইন করা ব্যবহারকারীর নাম পেতে পারেন WMI ক্লাস। PowerShell কনসোল খুলুন এবং কমান্ডটি চালান:
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 ping এবং Test-NetConnection 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-তে কম্পিউটার বৈশিষ্ট্যগুলিতে সংরক্ষণ করতে পারেন। এটি করার জন্য, আপনি "Set-ADComputer:How to Add User Information to AD Computer Properties" নিবন্ধে বর্ণিত একটি লগঅন স্ক্রিপ্ট ব্যবহার করতে পারেন৷
এর পরে, কোনও নির্দিষ্ট ব্যবহারকারী কোথায় লগ ইন করেছেন তা খুঁজে পেতে আপনাকে সমস্ত কম্পিউটার স্ক্যান করতে হবে না। আপনি সক্রিয় ডিরেক্টরিতে একটি সাধারণ প্রশ্ন ব্যবহার করে একটি ব্যবহারকারী কম্পিউটার খুঁজে পেতে পারেন:
$user='m.smith'
নির্বাচন করুন
$user_cn=(Get-ADuser $user -properties *).DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft