用于在Windows server中标识进程名称、内存、帐户所有者的脚本
我正在Windows机器上运行一个web服务,我想知道每个用户在访问此web服务时使用的内存。 在任务管理器中,我可以看到进程名、用户名和内存。 有没有办法通过运行powershell或批处理脚本来获得相同的结果用于在Windows server中标识进程名称、内存、帐户所有者的脚本,windows,powershell,wmi,win32-process,Windows,Powershell,Wmi,Win32 Process,我正在Windows机器上运行一个web服务,我想知道每个用户在访问此web服务时使用的内存。 在任务管理器中,我可以看到进程名、用户名和内存。 有没有办法通过运行powershell或批处理脚本来获得相同的结果 请提供帮助。可能有更干净的方法可以做到这一点,但这里有一个例子: $users = @{} $process = Get-Process Get-WmiObject Win32_SessionProcess | ForEach-Object { $userid = (($_
请提供帮助。可能有更干净的方法可以做到这一点,但这里有一个例子:
$users = @{}
$process = Get-Process
Get-WmiObject Win32_SessionProcess | ForEach-Object {
$userid = (($_.Antecedent -split “=”)[-1] -replace '"' -replace “}”,“”).Trim()
if($users.ContainsKey($userid))
{
#Get username from cache
$username = $users[$userid]
}
else
{
$username = (Get-WmiObject -Query "ASSOCIATORS OF {Win32_LogonSession.LogonId='$userid'} WHERE ResultClass=Win32_UserAccount").Name
#Cache username
$users[$userid] = $username
}
$procid = (($_.Dependent -split “=”)[-1] -replace '"' -replace “}”,“”).Trim()
$proc = $process | Where-Object { $_.Id -eq $procid }
New-Object psobject -Property @{
UserName = $username
ProcessName = $proc.Name
"WorkingSet(MB)" = $proc.WorkingSet / 1MB
}
}
输出:
UserName ProcessName WorkingSet(MB)
-------- ----------- --------------
Frode taskhostex 61,5
Frode explorer 172,33203125
Frode RuntimeBroker 21,9375
Frode HsMgr 5,578125
Frode HsMgr64 5,453125
Frode SetPoint 17,4375
代码需要以管理员身份运行才能为其他用户而不仅仅是当前用户获取会话。您是否尝试过获取过程 您可以运行它并按各种因素进行筛选。您可以使用-name或-id按进程名称或PID进行筛选。例:
get-process -name iexplore
get-process -Id 0 # this returns the idle process.
或者,您可以通过其他因素进行过滤
获取使用超过1MB内存的进程
get-process |Where-object {$_.WorkingSet64 -gt 1048576}
有关获取过程的更多信息,请点击此处:问题非常不清楚。我制作了一个脚本,其中列出了可以在服务器端运行的计算机上的每个进程及其所有者。但当我再次阅读时,您似乎想知道每个用户会话在web服务器上使用了多少内存?