Как проверить, что запустило сценарий powershell

#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