终端服务器每用户的内存使用量

时间:2013-01-30 15:47:25

标签: service terminal

我需要对终端服务器运行查询,以查找每个用户每个会话的内存使用情况。我想编写一个简单的批处理文件,我可以每小时运行一次,将每个用户的内存使用量打印到文本文件中。是否有类似于QUSER的命令显示内存使用情况?我一直在寻找一种方法来做到这一点,但到目前为止还没有提出任何建议。我正在寻找能够返回类似信息的东西:

用户名00.00mb

提前致谢

1 个答案:

答案 0 :(得分:0)

WMI的Win32_Process课程(包括会话ID)提供了一些基本的统计数据,可以帮助您入门。

要对此进行扩展,请使用PowerShell:

  1. 使用Win32_Process获取流程详细信息,包括WorkingSetSize和SessionId。

  2. 对于获取用户帐户的每个会话中的一个进程(无关紧要),您需要遵循WMI中的关联(有点像RDBMS中的关系,但是WQL - 类似SQL的语言用于查询WMI - 不进行连接。)

  3. 类似于:

    $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的所有内置部分。