#windows #powershell #scheduled-tasks
#Windows #powershell #запланированные задачи
Вопрос:
У меня есть сценарий PowerShell, который может быть запущен либо
- запуск ярлыка на рабочем столе ИЛИ
- как запланированное задание из планировщика задач Windows.
Есть ли какой-либо способ в самом сценарии определить, как он был запущен? На практике каждый метод создает медленно прокручивающееся командное окно на экране, и после его запуска я не могу узнать, как оно было инициировано. Скрипт уже регистрирует некоторые данные о себе (имя, дату, время и $ PID), но пока я не нашел, как протестировать метод запуска, т.Е. Планировщик задач или ручной запуск.
Комментарии:
1. Я бы просто добавил параметр switch, например
-scheduled
, который я бы передал при запуске из планировщика задач.2. вы можете установить функцию в скрипте, которая сообщает вам, кто его запускает. Что касается того, кто / как его запускает, я бы использовал фильтрацию событий.
3. У вас полностью включен и настроен аудит PS?
Ответ №1:
Сценарий, который запускается планировщиком задач, имеет родительский процесс с именем svchost
, поэтому вы можете использовать следующий код в своем сценарии, чтобы обнаружить это:
'svchost' -eq (Get-Process -Id (Get-CimInstance Win32_Process -Filter "ProcessID = $pid").ParentProcessId).Name