[server] Windows에 PID가 주어지면 명령 행 명령을 어떻게 찾습니까?

데이터베이스에서 현재 실행중인 모든 프로세스의 목록과 프로세스를 시작한 sql 명령을 얻을 수 있습니다.

창문 상자에서 비슷한 일을하고 싶습니다.

프로세스 목록을 얻을 수는 있지만 프로세스를 시작한 명령 줄은 아닙니다.

내 질문은 : Windows에서 PID주어 졌을 때-PID를 실행 한 명령 줄 명령을 어떻게 찾습니까?

가정 :

  • Windows 7 및 동등한 서버


답변

Powershell 및 WMI

Get-WmiObject Win32_Process | Select ProcessId,CommandLine

또는

Get-WmiObject -Query "SELECT CommandLine FROM Win32_Process WHERE ProcessID = 3352"

프로세스에 대한이 정보에 액세스하려면 권한이 있어야합니다. 따라서 알고 자하는 프로세스가 권한있는 컨텍스트에서 실행중인 경우 명령을 admin으로 실행해야 할 수도 있습니다.


답변

WMIC.EXE를 사용하여 WMI 하위 시스템을 사용하여이 정보를 얻을 수 있습니다. PID가 600이라고 가정하면 :

wmic.exe path Win32_Process where handle='600' get name, commandline  /format:list

프로세스의 이름 또는 기타 특성을 검색 할 수도 있습니다. 모든 속성을 나열하려면이 명령을 사용하십시오.

wmic.exe path Win32_Process get  /format:list


답변

다른 답변은 명령 줄 특성으로 인해 자동화 된 시스템에서 잘 작동하는 훌륭한 옵션입니다 (그리고 태그에서 원하는 것을 볼 수 있습니다). 물론 어떤 사람들은 GUI를 사용하여 이런 종류의 정보를 탐색하고 싶을 수도 있습니다.

프로세스 탐색기는 Microsoft에서 유지 관리하는 Sysinternals 도구입니다. 프로세스의 이름을 더 이상 사용할 수는 없지만 프로세스의 속성 대화 상자 및 프로세스를 시작한 상위 프로세스에 프로세스의 명령 행을 표시 할 수 있습니다. 프로세스 속성 대화 상자는 다음과 같습니다.

프로세스 속성 대화 상자

프로세스 시작시기 및 조건에 대한보다 자세한 감사 추적을 원하는 경우 프로세스 모니터라는 다른 Sysinternals 도구를 사용할 수 있습니다. 여기에서 “프로세스 시작”이벤트를 필터링하고 프로세스가 시작된 환경에 대해 배우고 그 당시에 발생한 다른 이벤트를 확인할 수 있습니다. 꽤 강력한 프로그램입니다. 이벤트 속성 대화 상자는 다음과 같습니다.

이벤트 속성 대화 상자


답변

보완하기 위해 라이언 RIES는 ‘도움이 PowerShell을 대답을바이어 짧은 다른 -Filter매개 변수사용하는Get-CimInstance 대신에 사용되지-이후-V3 Get-WmiObjectcmdlet을 .

# Target a process by its PID (process ID) and report its command line, 
# using the PowerShell session's own PID as an example ($PID).
(Get-CimInstance Win32_Process -Filter "ProcessId=$PID").CommandLine

# Alternatively, target process(es) by name (may return multiple processes), 
# using Notepad.exe as an example.
# Select-Object is used to report both the PID and the command line.
Get-CimInstance Win32_Process -Filter "Name='Notepad.exe'" |
  Select-Object ProcessId, CommandLine

-Filter매개 변수를 사용하면을 통해 전체 쿼리 문을 전달하는 대신 WQL 문의 WHERE절 을 전달할 수 있습니다 .-Query


답변