Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
powershell获取调用用户运行的特定应用程序的PID_Powershell_String Formatting - Fatal编程技术网

powershell获取调用用户运行的特定应用程序的PID

powershell获取调用用户运行的特定应用程序的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进程。这很有效,但不幸的是需要更高

我们有一个限制性许可的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的代码,我可以提取PID

($result[3] -split '\s+')[1]
虽然作为管理员,它运行得非常快,但对于普通用户,Tasklist的运行速度与WMI一样慢,如上所述

所以,这让我回到了原点

有没有人知道一些代码,可以快速检查和查看用户XYZ是否正在运行名为ABC.EXE的进程??这需要对普通用户起作用,但普通用户不需要查看其他用户的进程,并且不需要花费30秒以上的时间来运行

我没有嫁给powershell。VBScript就可以了。或者任何互联网上的小工具


谢谢

对于您拥有的示例:

($result[3] -split '\s+')[1]

请注意,这只适用于返回的一个结果。如果您需要多个实例,那么您应该编写一个循环,从数组中的第4个项开始迭代,然后拆分每个项,以获得该进程的PID。

我放弃了在Powershell中寻找方法。要么方法太慢,要么需要管理员

所以我用C写了一些东西: