Batch file 如何查找已登录到计算机的客户端名称?
我们正试图找到用户从哪台机器获取rdp 使用“quser”实用程序,我们可以获得有关登录用户的所有信息,但客户端名称除外 下面是命令Batch file 如何查找已登录到计算机的客户端名称?,batch-file,powershell,logging,cmd,Batch File,Powershell,Logging,Cmd,我们正试图找到用户从哪台机器获取rdp 使用“quser”实用程序,我们可以获得有关登录用户的所有信息,但客户端名称除外 下面是命令 function Get-LoggedOnUser { param([String[]]$ComputerName = $env:COMPUTERNAME) $ComputerName | ForEach-Object { (quser /SERVER:$_) -replace '\s{2,}', ',' | Conve
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任务管理器中可以提供的除客户端名称以外的所有信息
如何使用powershell获取客户端名称?我怀疑WMI是否有办法做到这一点。您可以检查PSTerminal服务模块,它有一个
Get-TSSession
cmdlet,该cmdlet执行与您所寻找的相同的任务
此模块使用二进制文件,您可以使用:
http://gallery.technet.microsoft.com/scriptcenter/0e43993a-895a-4afe-a2b2-045a5146048a
并查找登录类型为RemoteInteractive的登录用户。您可以从安全事件日志中读取该信息(查找登录类型10):
$username='…'
$eventID=4624#526,在Server 2003及更早版本上
$date=(获取日期).date
$pattern='登录类型:\s+10[\s\s]+源网络地址:\s+(\s+)
获取事件日志安全性-InstanceId$eventID-EntryType SuccessAudit`
-$date之后-消息“*$username*”`
| ? {$\消息-匹配$pattern}`
|%{$matches[1]}`
|选择-唯一
请注意,在Server2003和更早版本上,您需要检查事件ID 528,而不是4624
参考文献:
$env:CLIENTNAME是否适合您quser
似乎不包括客户端名称information@poiu2000是否可以通过远程处理在远程计算机上运行$env:ClientName?没有$env:ClientName。你是说$env:ComputerName吗?是的,它将在远程会话中可用。@Samselvaprabu请看这里: