Em um banco de dados, posso obter uma lista de todos os processos em execução no momento e o comando sql que os iniciou.
Eu gostaria de fazer uma coisa semelhante em uma caixa de janelas.
Eu posso obter a lista de processos, mas não a linha de comando que os iniciou.
Minha pergunta é: Dado um PID no Windows - como encontro a instrução de linha de comando que o executou?
Suposições:
- Windows 7 e servidores equivalentes
windows
windows-command-prompt
pid
Hawkeye
fonte
fonte
| FL
no final do comando. Isso expande toda a linha de comando para mim. Também pode querer brincar com| Select -ExpandProperty CommandLine
Você pode usar o subsistema WMI, usando WMIC.EXE para obter essas informações. Supondo um PID de 600:
Você também pode procurar por nome ou outra característica do processo. Use este comando para listar todos os atributos:
fonte
process
apelido em vez depath Win32_Process
; por exemplo,wmic.exe process get
As outras respostas certamente são boas opções que o servirão bem em um sistema automatizado devido à natureza da linha de comando (e vejo pela tag que é isso que você queria). Obviamente, algumas pessoas podem querer explorar esse tipo de informação com uma GUI, então aqui está uma alternativa nesse sentido.
Process Explorer é uma ferramenta Sysinternals mantida pela Microsoft. Ele pode exibir a linha de comando do processo na caixa de diálogo de propriedades do processo, bem como o pai que o iniciou, embora o nome desse processo possa não estar mais disponível. Aqui está o diálogo de propriedades do processo:
Se você desejar uma trilha de auditoria mais detalhada de quando um processo foi iniciado e sob quais condições, poderá recorrer a outra ferramenta Sysinternals chamada Process Monitor. Aqui, você pode filtrar por eventos "Processo iniciado", aprender sobre o ambiente em que o processo foi iniciado e ver quais outros eventos estavam ocorrendo nesse período. É um programa bastante poderoso. Aqui está o diálogo de propriedades do evento:
fonte
Command Line
coluna tiver sido adicionada se você passar o mouse sobre essa coluna.Para complementar a resposta útil do PowerShell de Ryan Ries com uma alternativa mais curta por meio do
-Filter
parâmetro que também usa, emGet-CimInstance
vez do cmdlet obsoleto desde a v3Get-WmiObject
.O
-Filter
parâmetro essencialmente permite que você passe aWHERE
cláusula de uma instrução WQL em vez de passar uma instrução de consulta completa via-Query
.fonte