2014-09-05 4 views
1

나는 자체의 여러 인스턴스를 실행하는 응용 프로그램이 있습니다. 예컨대powershell v2 - 프로세스 ID를 얻는 방법

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

내가 AppNames 및 인스턴스의 배열을 제공하는 간단한 스크립트를 작성하려고 파워 쉘의 V2를 사용하여, 그것은을 종료 한 후 검사가 실행중인 경우, 그들을 통해 루프합니다.

이 작업을 수행하는 가장 좋은 방법은 각 인스턴스를 확인하고 발견되면 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를 얻는 방법을 말해 줄래?

+1

이가 더 간단해야한다 :'$ PID = GET 프로세스 APPNAME을 | 난 여전히 새로운 해요 -expand 아이디' –

+0

을 선택 PowerShell로하지만 이것이 내가 좋아하는 이유입니다. 15 줄의 코드 줄이 1로 줄어 들었습니다. 그러나 실행할 때 다음과 같은 오류가 나타납니다. "변수 PID는 읽기 전용이거나 상수이기 때문에 덮어 쓸 수 없습니다." – IGGt

+1

아 죄송합니다. 변수 이름이 내장되어 있습니다. 당신은 예를 들어'$ processid' –

답변

4

대신 사용하여 WMI의 취득 프로세스를 cmdlet을 사용할 수 있습니다

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

+0

그게 큰 환호입니다. – IGGt

관련 문제