Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在Windows server中标识进程名称、内存、帐户所有者的脚本_Windows_Powershell_Wmi_Win32 Process - Fatal编程技术网

用于在Windows server中标识进程名称、内存、帐户所有者的脚本

用于在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 = (($_

我正在Windows机器上运行一个web服务,我想知道每个用户在访问此web服务时使用的内存。 在任务管理器中,我可以看到进程名、用户名和内存。 有没有办法通过运行powershell或批处理脚本来获得相同的结果


请提供帮助。

可能有更干净的方法可以做到这一点,但这里有一个例子:

$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服务器上使用了多少内存?