tasklist를 사용하여 작업을 호출하는 명령을 얻는 방법은 무엇입니까?

tasklist를 사용하여 작업을 호출하는 명령을 얻는 방법은 무엇입니까?

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

wmiccsv로 출력하는 스위치도 있습니다. 그래서:

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

관련 정보