我们正在尝试查找用户从哪台机器上获取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任务管理器中提供的所有信息。
如何使用powershell获取客户端名称?
答案 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。
<强>参考文献:强>