如何查找已登录到计算机的客户端名称?

时间:2014-01-16 05:58:40

标签: batch-file powershell logging cmd

我们正在尝试查找用户从哪台机器上获取rdp。

使用“quser”实用程序,我们可以获取有关登录用户的所有信息,但客户名称除外。

以下是命令

function Get-LoggedOnUser
{
  param([String[]]$ComputerName = $env:COMPUTERNAME)

    $ComputerName | ForEach-Object {
      (quser /SERVER:$_) -replace '\s{2,}', ',' | 
        ConvertFrom-CSV |
        Add-Member -MemberType NoteProperty -Name ComputerName -Value $_ -PassThru
  }
} 

它显示除Windows客户端名称外可在Windows任务管理器中提供的所有信息。

enter image description here

如何使用powershell获取客户端名称?

3 个答案:

答案 0 :(得分:0)

我怀疑WMI是否有办法做到这一点。您可以检查PSTerminal Services模块,它有一个Get-TSSession cmdlet,它可以完成您正在寻找的相同工作。

http://archive.msdn.microsoft.com/PSTerminalServices

此模块使用二进制Cassia namespace.

答案 1 :(得分:0)

您可以使用:

http://gallery.technet.microsoft.com/scriptcenter/0e43993a-895a-4afe-a2b2-045a5146048a

并查找登录类型为RemoteInteractive

的登录用户

答案 2 :(得分:0)

您可以从安全事件日志中查找该信息(查找登录类型10):

$username = '...'
$eventID  = 4624    # 526 on Server 2003 and earlier
$date     = (Get-Date).Date

$pattern  = 'logon type:\s+10[\s\S]+source network address:\s+(\S+)'

Get-EventLog Security -InstanceId $eventID -EntryType SuccessAudit `
    -After $date -Message '*$username*' `
  | ? { $_.Message -match $pattern } `
  | % { $matches[1] } `
  | select -Unique

请注意,在Server 2003及更早版本中,您需要检查事件ID 528而不是4624。

<强>参考文献: