1

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

用户名 00.00mb

提前致谢

4

1 回答 1

0

WMI 的课程中​​提供了一些基本统计信息Win32_Process(包括会话 ID),这应该可以帮助您入门。

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

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

  2. 对于每个会话中的一个进程(不管是哪个)来获取用户帐户,您需要遵循 WMI 中的关联(有点像 RDBMS 中的关系,但是 WQL——用于查询 WMI 的类似 SQL 的语言)没有'不要加入)。

所以像:

$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实例。

注意。我建议过滤掉会话 0 以避免包含 Windows 的所有内置部分。

于 2013-01-30T16:11:36.877 回答