PowerShell实现获取进程所有者_PowerShell

适用于PowerShell 3.0或者和更高版本。

Get-Process 能够获取当前运行的所有进程的列表,但是它不会返回进程的所有者信息,如果在PowerShell查询进程的所有者信息,我们需要调用WMI服务。下面给出一个例子。

复制代码 代码如下:

filter Get-ProcessOwner
{
  $id = $_.ID
  $info = (Get-WmiObject -Class Win32_Process -Filter "Handle=$id").GetOwner()
  if ($info.ReturnValue -eq 2)
  {
    $owner = '[Access Denied]'
  }
  else
  {
    $owner = '{0}\{1}' -f $info.Domain, $info.User
  }
  $_ | Add-Member -MemberType NoteProperty -Name Owner -Value $owner -PassThru
}

荔非苔注:其实之前已经发布过类似的文章,但是今天旧事重提,是因为在这篇中原文作者使用了过滤器,没有使用函数,值得借鉴。

当进程对象传递给Get-ProcessOwner后,它会在原有的对象上追加一个“Owner”属性,默认这个属性是隐藏的。你可以使用Selec-Object让它显示。

复制代码 代码如下:

PS> Get-Process -Id $pid | Get-ProcessOwner | Select-Object -Property Name, ID, Owner

Name                    Id Owner
----                    -- -----
powershell_ise       10080 TOBI2\Tobias

上面的过滤器函数也适用于多个对象:

复制代码 代码如下:

PS> Get-Process | Where-Object MainWindowTitle | Get-ProcessOwner | Select-Object -Property Name, ID, Owner

Name                    Id Owner                   
----                    -- -----                   
chrome               13028 TOBI2\Tobias            
devenv               13724 TOBI2\Tobias            
Energy Manager        6120 TOBI2\Tobias            
ILSpy                14928 TOBI2\Tobias            
(...)

注意要查看所有进程的信息,你需要让PowerShell在管理员身份下运行。否则你只能看到所有者是你自己的进程,其它进程的所有者显示:“Access Denied”。而且这样的信息相对来说也没有什么意义。

时间: 2024-10-31 22:26:47

PowerShell实现获取进程所有者_PowerShell的相关文章

Powershell小技巧之获取MAC地址_PowerShell

在Powershell中获取MAC地址不是很难.这里就有一种方法: 复制代码 代码如下: PS> getmac /FO CSV | ConvertFrom-Csv Physical Address                        Transport Name                         ----------------                        --------------                         5C-51-4F-6

如何在NT下获取进程的路径(增补)

一.程序说明 最近整理文档,发现以前写的<如何在NT下获取进程的路径>一文中还有个问题没有解决:原文中的程序无法获取系统进程的路径,如:csrss.exe.记得VCKBASE上有位网友说过一个方法:"给枚举的进程增加SE_DEBUG_NAME权限即可",于是在网上找了些资料,解决了原文中的问题.这里要特别感谢那位名叫rovershen的网友! 我自定义了一个函数,用来赋予进程指定的权限(本例为SE_DEBUG_NAME): BOOL EnablePrivilege(HAND

如何在NT下获取进程的路径

一:获取NT下进程路径的方法 在Win9X系统中,利用ToolHelp API中的相关函数可以很方便得得到进程的名称及其路径.但这种方法在NT系统中就不能奏效了,szExeFile仅仅得到的是进程的名称,并没有包含进程的路径. 如何在NT下获取进程的路径呢?(由于WIN9X系统不在我们讨论的范围之内,所以我们选用PSAPI中的相关函数进行说明,这仅仅适用于NT系统.)其实也很简单--用OpenProcess()函数将进程打开后,再利用EnumProcessModules()函数枚举该进程的模块,

Shell脚本中获取进程ID的方法

 这篇文章主要介绍了Shell脚本中获取进程ID的方法,我想要知道运行中脚本子shell的进程id,我该如何在shell脚本中得到PID,阅读本文即可找到你想要答案,需要的朋友可以参考下     提问: 我想要知道运行中脚本子shell的进程id.我该如何在shell脚本中得到PID. 当我在执行shell脚本时,它会启动一个叫子shell的进程.作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为"批处理进程"). 在某些情况下,你也许想要知道运行中

Android 获取进程内存使用情况方法

ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); Log.i(TAG, " memoryInfo.availMem " + memoryInfo.

CMD魔法堂:获取进程路径和PID值的方法集

一.前言      在开发发布更更新工具--更新Weblogic应用模块时,了解到更新Weblogic应用需要先关闭Weblogic应用窗口然后是清缓存.更新应用文 件,最后再重启Weblogic应用窗口.所以第一步需要获取Weblogic应用窗口的PID然后将其kill掉.下面将记录曾经的各种尝试,以便日后 查阅.   二.wmic命令 windows自带功能,功能十分强大 示例1--获取所有进程信息: wmic process 示例2--指定进程执行路径获取PID信息: vmic proce

process-请问在ios9系统中如何获取进程信息

问题描述 请问在ios9系统中如何获取进程信息 我现有的代码是这样的,但是在ios9下是获取不到进程信息的,请问我如何获取进程信息 (NSArray *)runningProcesses1 { int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0}; size_t miblen = 4; size_t size; int st = sysctl(mib, miblen, NULL, &size, NULL, 0); struct kinfo_pr

进程监控-C# WMI怎样获取进程的状态,需监测到进程的无响应状态

问题描述 C# WMI怎样获取进程的状态,需监测到进程的无响应状态 我监测到ManagementObject中的各项属性,其中status和excutionstate都是null的,这样就监测不到进程的运行状态了,求大神指导 解决方案 WMI里面应该没有提供这个信息.所以为null 解决方案二: 无响应状态一般是发一个消息,看看能不能返回,不能返回就是无响应的

c++获取进程信息列表和进程所调用的dll列表_C 语言

复制代码 代码如下: // -----------------------// FileName: // ProcessInfo.h// remarks:// 基于应用层实现,有的进程,如杀软进程等获取不到调用的dll列表.// ----------------------- #pragma once#include <vector> struct ProInfo{    // 保存进程PID    unsigned int uPID;    // 保存进程名    CString strPr