
Windows 작업 관리자에는 다음과 같은 열이 있습니다.명령줄이는 모든 스위치 및 매개변수와 함께 특정 작업을 시작한 명령을 보여줍니다. 예를 들면 다음과 같습니다.
test.exe -V -A 127.0.0.1 -P 6062
이제 특정 포트에서 수신 중이거나 특정 스위치 조합으로 호출된 특정 작업을 식별해야 합니다. 내 목표는 선택한 작업만 닫고 다른 작업은 닫는 것입니다. 따라서 여러 test.exe
작업이 실행 중인 경우 다음에서 반환된 모든 작업을 간단히 닫을 수는 없습니다.
tasklist /fo csv /nh /fi "imagename eq test.exe"
tasklist
불행히도 그것은 둘 다 아닌 것 같습니다 pslist
(여기)는 다음을 반환할 수 있습니다.명령줄필드. 이 문제를 어떻게 극복할 수 있습니까?
답변1
이건 어때:
wmic process where caption="test.exe" get commandline
그리고 이렇게 하면 종료할 ProcessId도 얻게 됩니다.
wmic process where caption="test.exe" get commandline,processid
wmic
csv로 출력하는 스위치도 있습니다. 그래서:
wmic /output:c:\temp\proc.csv process where caption="test.exe" get commandline,processid /format:csv
참고: 마지막 항목( )에 오류가 발생하면 에서 로 Invalid XSL format (or) file name
복사해야 합니다 . 이 버그에 대해 읽을 수 있습니다.csv.xml
%WINDIR%\System32\wbem\en-US
%WINDIR%\System32\wbem
여기.
PowerShell을 사용할 수도 있습니다.
Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`
답변2
파워셸 7:
get-process test | % commandline
답변3
적어도 Windows 11에서는 출력에 "캡션" 열이 없어 wmic process
결과가 발견되지 않았기 때문에 위의 최상위 답변이 작동하지 않았습니다. (그렇습니다. Windows 11에서는 wmic가 더 이상 사용되지 않는다는 것을 알고 있습니다. 여전히 작동합니다.)
대신 해당 WHERE 절에 사용할 수 있는 다른 열이 실제로 있으며 wmic 에서 사용할 수 있습니다 process list /?
. 그 중에는 물론 name
(프로세스 이름에 대한) 것과 processid
위에서 언급한 (pid에 대한) 것이 있으므로 이것이 대신 작동했습니다.
wmic process where name="test.exe" get commandline,processid
하나 더:명령줄을 보려면 관리자 권한으로 명령 프롬프트를 실행해야 한다는 것을 알았습니다.. 그렇지 않으면 출력에 명령줄이 비어 있는 것으로 표시되었습니다.
CommandLine ProcessId
10496