powershell v2 - 如何获取进程ID

时间:2014-09-05 13:01:10

标签: process powershell-v2.0

我有一个应用程序,它运行自己的多个实例。 e.g

AppName.exe instance1
AppName.exe instance2
AppName.exe instance3

使用Powershell v2我试图创建一个简单的脚本,给出一组AppNames和实例,它循环遍历它们,检查它们是否正在运行,然后关闭它们。

我认为执行此操作的最佳方法是检查每个实例,如果找到则捕获它的processID,并将其传递给stop-process cmdlet。

但是,我无法弄清楚如何获取进程ID。

到目前为止,我有:

$appName = "AppName.exe"
$instance = "instance1"

$filter = "name like '%"+$appName+"%'"
$result = Get-WmiObject win32_process -Filter $filter

foreach($process in $result )
    {
        $desc = $process.Description
        $commArr = $process.CommandLine -split"( )" 
        $inst = $commArr[2] 
        $procID = "GET PROCESS ID HERE"

        if($inst -eq $instance)
            {
                Stop-Process $procID
            }
    }

有谁能告诉我从哪里获取进程ID?

3 个答案:

答案 0 :(得分:7)

您可以使用get-process cmdlet而不是使用wmi:

$procid=get-process appname |select -expand id

答案 1 :(得分:0)

使用 Get-WmiObject win32_process ... 时,返回的对象具有名为 ProcessId 的属性。

所以,在问题中,你在哪里:

$procID = "GET PROCESS ID HERE"

使用:

$procID = $process.ProcessId

您也可以在 $filter 赋值中使用它,例如

$filter = "ProcessId=1234"

答案 2 :(得分:-1)

$procid=(get-process appname).id