Eu quero escrever um script que irá matar todos os processos cujos executáveis são assinados por uma determinada autoridade. Eu sei como obter a lista de processos em execução e como enviar uma lista filtrada para ser eliminada. ( Get-Process
e Stop-Process
, respectivamente.) Mas não sei como obter de maneira eficiente as informações da assinatura digital para cada processo ou filtrar de acordo com essa assinatura.
Eu estou supondo que os passos serão algo como:
- Obtenha uma lista de todos os processos.
- Use outro cmdlet para obter a assinatura digital de cada processo.
- Use os dados da etapa 2 para filtrar por autoridade de assinatura.
- Enviar lista filtrada para Stop-Process.
No entanto, isso parece um pouco ineficiente em que eu gostaria de evitar a execução de comandos em todos os processos mais do que eu preciso. (Por exemplo: Fazer os passos 2 e / ou 3 do passo 1 seria bom.) Além disso, eu simplesmente não sei como fazer o passo 2.
Então, basicamente eu tenho duas perguntas aqui:
- Como faço para obter informações de assinatura digital para os executáveis associados aos processos em execução no momento, de uma maneira que possa ser usada para filtrar a lista?
- Existe uma maneira de fazer o número 1 sem chamar um cmdlet separado após o Get-Process? (Por apenas olhando propriedades das objetos entregues pelo Get-Process.)
O ambiente atual está usando o PowerShell 4.0 no Windows 7 SP1. Observações sobre compatibilidade com versões anteriores / futuras de determinadas soluções são bem-vindas.