Я хочу написать сценарий, который убьет все процессы, исполняемые файлы которых подписаны определенным органом. Я знаю, как получить список запущенных процессов и как отфильтровать отфильтрованный список для уничтожения. (Get-Process
и Stop-Process
, соответственно.) Но я не знаю, как эффективно получать информацию о цифровой подписи для каждого процесса или фильтровать в соответствии с этой подписью.
Я предполагаю, что шаги будут примерно такими:
- Получить список всех процессов.
- Используйте другой командлет, чтобы получить цифровую подпись каждого процесса.
- Используйте данные из шага 2 для фильтрации по органу подписи.
- Отправить отфильтрованный список в Stop-Process.
Тем не менее, это кажется немного неэффективным, так как я хотел бы избегать выполнения команд во всех процессах больше, чем нужно. (например, было бы неплохо сделать шаги 2 и / или 3 частью шага 1). Кроме того, я просто не знаю, как сделать шаг 2.
Итак, по сути, у меня есть два вопроса здесь:
- Как получить информацию о цифровой подписи для исполняемых файлов, связанных с запущенными в данный момент процессами, способом, который можно использовать для фильтрации списка?
- Есть ли способ сделать # 1 без вызова отдельного командлета после Get-Process? (Например, просто просматривая свойства объектов, предоставляемых Get-Process.)
Текущая среда использует PowerShell 4.0 на Windows 7 SP1. Замечания о обратной / прямой совместимости для данных решений приветствуются.