我需要对终端服务器运行查询,以查找每个用户每个会话的内存使用情况。我想编写一个简单的批处理文件,我可以每小时运行一次,将每个用户的内存使用量打印到文本文件中。是否有类似于QUSER的命令显示内存使用情况?我一直在寻找一种方法来做到这一点,但到目前为止还没有提出任何建议。我正在寻找能够返回类似信息的东西:
用户名00.00mb
提前致谢
答案 0 :(得分:0)
WMI的Win32_Process
课程(包括会话ID)提供了一些基本的统计数据,可以帮助您入门。
要对此进行扩展,请使用PowerShell:
使用Win32_Process
获取流程详细信息,包括WorkingSetSize和SessionId。
对于获取用户帐户的每个会话中的一个进程(无关紧要),您需要遵循WMI中的关联(有点像RDBMS中的关系,但是WQL - 类似SQL的语言用于查询WMI - 不进行连接。)
类似于:
$processes = Get-WmiObject -class Win32_Proces
# For example pick the first process in session 1
$sessionProcess = $processes | Where-Object { $_.SessionId -ne 0 } | Select-Object -first 1
# Get the session for the process, and then the user account for that session:
$logon = get-wmiobject -Query "associators of{$($sessionProcess.__RELPATH)} where resultclass=Win32_LogonSession"
$user = get-wmiobject -Query "associators of{$($logon.__RELPATH)} where resultclass=Win32_UserAccount"
和$user
将保留Win32_UserAccount
个实例。
NB。我建议过滤掉会话0,以避免包含Windows的所有内置部分。