PowerShell查看进程的所属用户


适用于所有Windows PowerShell 版本

查看一个特定进程的所有者用户是谁,有多少个改进程的实例,可以尝试下面的代码:

$ProcessName = 'explorer.exe'

(Get-WmiObject -Query "select * from Win32_Process where name='$ProcessName'").GetOwner().User

注意:有许多不同的途径可以获取当前登陆的用户,但是由于你的操作系统版本的不同,所以方法不尽相同。如果使用图形化用户界面还好,但是如果是非用户界面Core服务器,脚本可能不能检测到当前连接主机的用户。


上面的例子返回了所有的“explorer.exe”进程的所有者。如果你拥有管理员权限并且远程登陆了,用户列表中还会可能会包括非活动用户。因为每个桌面上打开的 explorer.exe可能属于不同的会话,不同的用户。

如果使用了 Sort-Object 命令,可以非常容易排除重复项。

$ProcessName = 'explorer.exe'

 (Get-WmiObject ?Query "select * from Win32_Process where name='$ProcessName'").GetOwner().User |

 Sort-Object -Unique

并且,如果你更改了要查看的进程的名称,还会发现其它有趣的事情。下面的脚本会列出,当前通过PowerShell远程管理连接到你机器的用户:

$ProcessName = 'wsmprovhost.exe'

 try

 {

 (Get-WmiObject -Query "select * from Win32_Process where name='$ProcessName'").GetOwner().User |

 Sort-Object -Unique

 }

 catch

 {

 Write-Warning "没有发现用户."

 }

在cmd中直接运行PowerShell脚本文件的方法
以前在cmd中执行powershell,我们都是这样:PowerShell.exe-filea.ps1现在想在cmd中这样执行:a.ps1此时需要将Powershell脚本的默认打开方式选择为Powershell.exe,可以

PowerShell脚本实现检测网络内主机类型
最近一直在写一个自动检测网络内主机类型的脚本。基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数

Powershell实现导入安装证书功能脚本分享
支持所有版本。通常从文件加载一个证书并且安装它到指定的库。可以使用下面的脚本:$pfxpath='C:temptest.pfx'$password='test'[System.Security.Cryptography.X509Certif