PowerShell (v1.0) 스크립트에서 실행중인 배치 파일의 P (접근) ID를 식별해야합니다. 누구든지이 일을 제안 할 수 있습니까?Powershell에서 실행중인 배치 파일의 PID를 확인하십시오.
고맙습니다. MagicAndi.
PowerShell (v1.0) 스크립트에서 실행중인 배치 파일의 P (접근) ID를 식별해야합니다. 누구든지이 일을 제안 할 수 있습니까?Powershell에서 실행중인 배치 파일의 PID를 확인하십시오.
고맙습니다. MagicAndi.
글쎄, 가능한지 여부는 배치 파일을 실행 한 방법에 따라 다릅니다.
일반적으로이 기능을 찾을 수있는 유일한 방법은 배치를 시작하는 데 사용 된 명령 줄을 보는 것입니다. 그러나
PS Home:\> gwmi Win32_Process | ? { $_.commandline -match "test\.cmd" } | ft commandline,processid -auto
commandline processid
----------- ---------
cmd /c ""C:\Users\Me\test.cmd" " 1028
: Windows 탐색기에서 배치 파일을 더블 클릭하면 명령 줄을 포함 당신은 다음 Win32_Process
에 Get-WMIObject
을 사용할 수 있습니다 PowerShell에서
cmd /c ""C:\Users\Me\test.cmd" "
같은 명령 줄을 얻을 것이다 명령 프롬프트에서 직접 배치를 시작한 경우 배치가 실행 중이고 누가 시작했는지 외부에서 알 수 없습니다.
신뢰할 수있는 방식으로 가능하지 않습니다. 배치 파일 자체는 별도의 프로세스를 시작하지 않고 대신 cmd.exe 인스턴스 내에서 실행됩니다. 실행중인 파일을 신뢰할 수있게 알려주는 특정 프로세스의 내 보낸 데이터가 없습니다.
한 가지 예외는 cmd.exe 인스턴스가 배치 파일을 실행하기 위해 특별히 시작된 경우입니다. 이 경우 응용 프로그램의 명령 줄에 나타나고 배치 파일의 명령 줄을 grep 할 수 있습니다. cmd.exe 프롬프트에서 여러 배치 파일을 실행하더라도이 경우 일반적인 경우는 해결되지 않습니다.
그래, 유효한 대답에 익명 downvote – JaredPar
실행중인 배치 파일의 PID를 발견하는 한 가지 방법을 발견했습니다. 당신은 그것을 확인하기 위해 배치 파일에 배치 콘솔 창 제목을 설정해야합니다 :
파워 쉘 스크립트에서...
Title MyBatchWindow
...
, 당신이 당신의 배치와 일치하는 과정에서 PID를 MainwindowTitle 속성을 확인하고 검색 할 수 있습니다 창 제목 :
$batchProcess = get-process cmd | where-Object {$_.MainWindowTitle -eq "MyBatchWindow"}
$processID = $batchProcess .ID
...
나는이 방법을 테스트 한, 그리고 당신이 그것을 더블 클릭하여 배치 파일을 호출 할 경우, 또는 명령 줄에서 호출하여 두 작업이 나타납니다.
요하네스, 우수한 답변. +1 명령 프롬프트에서 호출 된 특정 배치 파일을 식별 할 수있는 방법에 대한 내 대답을 확인하십시오. 이 답변에 문제가 있으면 의견을 말하십시오! 감사. – MagicAndi
내가 여기서하고있는 것은 꽤 아니지만. – Joey
요하네스, 꽤 괜찮은 것은 아닙니다. 단지 효과가있는 것을 얻기에 충분합니다. – MagicAndi