Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

ค้นหาผู้ใช้ปัจจุบันที่เข้าสู่ระบบคอมพิวเตอร์ระยะไกล

บ่อยครั้งผู้ดูแลระบบจำเป็นต้องค้นหาชื่อผู้ใช้ที่เข้าสู่ระบบบนคอมพิวเตอร์ Windows ระยะไกลอย่างรวดเร็ว ในบทความนี้ เราจะแสดงเครื่องมือและสคริปต์ PowerShell บางอย่างที่สามารถช่วยให้คุณได้รับชื่อของผู้ใช้ที่เข้าสู่ระบบบนคอมพิวเตอร์ระยะไกล

สารบัญ:

  • ตรวจสอบผู้ใช้ที่เข้าสู่ระบบด้วย PSLoggedOn และ Qwinsta
  • จะรับผู้ใช้ปัจจุบันบนคอมพิวเตอร์ระยะไกลโดยใช้ PowerShell ได้อย่างไร
  • สคริปต์ PowerShell เพื่อค้นหาผู้ใช้ที่เข้าสู่ระบบบนคอมพิวเตอร์ระยะไกล

ตรวจสอบผู้ใช้ที่เข้าสู่ระบบด้วย PSLoggedOn และ Qwinsta

SysInternals PSTools ของ Microsoft มียูทิลิตี้คอนโซลชื่อ PSLoggedOn.exe ที่สามารถใช้เพื่อรับชื่อของผู้ใช้ที่เข้าสู่ระบบคอมพิวเตอร์ระยะไกล รวมถึงรายการเซสชัน SMB ที่เชื่อมต่อด้วย

ดาวน์โหลดเครื่องมือและเรียกใช้:

psloggedon \\RemoteCompName

ค้นหาผู้ใช้ปัจจุบันที่เข้าสู่ระบบคอมพิวเตอร์ระยะไกล

อย่างที่คุณเห็น เครื่องมือส่งคืนชื่อของผู้ใช้ที่เข้าสู่ระบบ (ผู้ใช้ที่เข้าสู่ระบบในเครื่อง ) และรายชื่อผู้ใช้ที่เข้าถึงทรัพยากร SMB ของคอมพิวเตอร์เครื่องนี้ผ่านเครือข่าย (ผู้ใช้ที่เข้าสู่ระบบผ่านการแชร์ทรัพยากร )

หากคุณต้องการรับเฉพาะชื่อของผู้ใช้ที่เข้าสู่ระบบในเครื่อง ให้ใช้ -l ตัวเลือก:

Psloggedon.exe \\pc1215wks1 –l

PSLoggedOn เชื่อมต่อกับรีจิสทรีและตรวจสอบชื่อของผู้ใช้ที่เข้าสู่ระบบในเครื่อง ในการดำเนินการ RemoteRegistry บริการจะต้องทำงาน คุณสามารถเรียกใช้และกำหนดค่าการเริ่มต้นบริการอัตโนมัติโดยใช้ PowerShell:

Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry

คุณยังสามารถรับรายการเซสชันบนคอมพิวเตอร์ระยะไกลโดยใช้ qwinsta . ในตัว เครื่องมือ. เครื่องมือนี้ควรจะคุ้นเคยกับผู้ดูแลระบบที่จัดการสภาพแวดล้อมเทอร์มินัลบริการเดสก์ท็อประยะไกล (RDS) หากต้องการรับรายการเซสชันผู้ใช้ที่บันทึกไว้จากคอมพิวเตอร์ระยะไกล ให้เรียกใช้คำสั่ง:

qwinsta /server:be-rdsh01

ค้นหาผู้ใช้ปัจจุบันที่เข้าสู่ระบบคอมพิวเตอร์ระยะไกล

เครื่องมือจะส่งคืนรายการเซสชันทั้งหมด (ใช้งานอยู่และถูกตัดการเชื่อมต่อโดยการหมดเวลา RDP) บนเซิร์ฟเวอร์ RDS หรือในเดสก์ท็อปรุ่น Windows 10 (11) (แม้ว่าคุณจะอนุญาตให้มีการเชื่อมต่อ 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

ค้นหาผู้ใช้ปัจจุบันที่เข้าสู่ระบบคอมพิวเตอร์ระยะไกล

คำสั่งจะแสดงเฉพาะผู้ใช้ที่เข้าสู่ระบบคอนโซล (ไม่ผ่าน RDP)

คุณยังสามารถใช้ PSRemoting เพื่อรับข้อมูลจากคอมพิวเตอร์ระยะไกลด้วย Invoke-Command cmdlet

คุณสามารถรับได้เฉพาะชื่อผู้ใช้บนคอมพิวเตอร์ระยะไกล (ไม่มีโดเมน) ใช้คำสั่งเหล่านี้:

$userinfo = Get-WmiObject -ComputerName pc1215wks1 -Class Win32_ComputerSystem
$user = $userinfo.UserName -split '\\'
$user[1]

ในเวอร์ชัน PowerShell Core (pwsh.exe) ที่ทันสมัย ​​คุณต้องใช้ Get-CimInstance cmdlet แทน Get-WmiObject :

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 เพื่อเชื่อมต่อกับคอมพิวเตอร์ระยะไกล ดังนั้นคุณต้องเปิดใช้งานและกำหนดค่า WinRM บนเครื่องเหล่านั้นโดยใช้ GPO หรือคำสั่งต่อไปนี้:

WinRM quickconfig

สคริปต์ PowerShell เพื่อค้นหาผู้ใช้ที่เข้าสู่ระบบบนคอมพิวเตอร์ระยะไกล

หากคุณต้องการรวบรวมข้อมูลเกี่ยวกับผู้ใช้ที่เข้าสู่ระบบจากคอมพิวเตอร์หลายเครื่อง คุณสามารถใช้ฟังก์ชัน 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

ค้นหาผู้ใช้ปัจจุบันที่เข้าสู่ระบบคอมพิวเตอร์ระยะไกล

หากฟังก์ชันส่งคืนชื่อผู้ใช้ที่ว่างเปล่าสำหรับคอมพิวเตอร์ แสดงว่าไม่มีใครเข้าสู่ระบบ

คุณสามารถรับชื่อของผู้ใช้ที่เข้าสู่ระบบคอมพิวเตอร์ในโดเมน Active Directory ใช้ 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”

หลังจากนั้น คุณไม่จำเป็นต้องสแกนคอมพิวเตอร์ทุกเครื่องเพื่อค้นหาว่าผู้ใช้รายใดเข้าสู่ระบบอยู่ คุณสามารถค้นหาคอมพิวเตอร์ของผู้ใช้โดยใช้แบบสอบถามอย่างง่ายไปยัง Active Directory:

$user='m.smith'
$user_cn=(Get-ADuser $user -properties *).DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft