powershell获取调用用户运行的特定应用程序的PID
我们有一个限制性许可的ERP应用程序,我们可以通过RemoteApp访问该应用程序。我们只需要允许每个用户有一个实例。所以,我一直在尝试使用PowerShell来实现这一点 脚本要做的是检查并查看调用用户是否正在运行pxxi.exe 我的第一次尝试使用WMI。它工作了,但结果是WMI非常非常慢 gwmi win32_进程-筛选器名称='pxxi.exe'|?{$\.getowner.user -eq$env:username}.pid 我的第二次尝试使用了Get进程。这很有效,但不幸的是需要更高的权限 获取进程pxxi-IncludeUserName |?{$\用户名-匹配$env:username}.id 我的第三次尝试集中在win32命令行程序任务列表上 $result=Invoke命令{c:\windows\system32\tasklist.exe/fi username eq$env:username/fi imagename eq pxxi.exe} 这管用!感谢EBGreen的代码,我可以提取PIDpowershell获取调用用户运行的特定应用程序的PID,powershell,string-formatting,Powershell,String Formatting,我们有一个限制性许可的ERP应用程序,我们可以通过RemoteApp访问该应用程序。我们只需要允许每个用户有一个实例。所以,我一直在尝试使用PowerShell来实现这一点 脚本要做的是检查并查看调用用户是否正在运行pxxi.exe 我的第一次尝试使用WMI。它工作了,但结果是WMI非常非常慢 gwmi win32_进程-筛选器名称='pxxi.exe'|?{$\.getowner.user -eq$env:username}.pid 我的第二次尝试使用了Get进程。这很有效,但不幸的是需要更高
($result[3] -split '\s+')[1]
虽然作为管理员,它运行得非常快,但对于普通用户,Tasklist的运行速度与WMI一样慢,如上所述
所以,这让我回到了原点
有没有人知道一些代码,可以快速检查和查看用户XYZ是否正在运行名为ABC.EXE的进程??这需要对普通用户起作用,但普通用户不需要查看其他用户的进程,并且不需要花费30秒以上的时间来运行
我没有嫁给powershell。VBScript就可以了。或者任何互联网上的小工具
谢谢 对于您拥有的示例:
($result[3] -split '\s+')[1]
请注意,这只适用于返回的一个结果。如果您需要多个实例,那么您应该编写一个循环,从数组中的第4个项开始迭代,然后拆分每个项,以获得该进程的PID。我放弃了在Powershell中寻找方法。要么方法太慢,要么需要管理员 所以我用C写了一些东西: