Get-ScheduledTask
Get-ScheduledTask — это командлет оболочки Windows PowerShell, предназначенный для получения информации о запланированных задачах в операционной системе Windows. Командлет входит в состав модуля ScheduledTasks, который предоставляет интерфейс для управления планировщиком задач (Task Scheduler) из командной строки или сценариев. Основное назначение Get-ScheduledTask — извлечение данных о задачах, их состоянии, триггерах, действиях и других параметрах, что позволяет администраторам и разработчикам автоматизировать мониторинг и управление расписанием выполнения программ.
История и контекст
Планировщик задач (Task Scheduler) в Windows существует с версии Windows NT 4.0 (1996 год) как компонент для автоматического запуска программ по расписанию или при наступлении определённых событий. С появлением Windows PowerShell в 2006 году (версия 1.0) для управления планировщиком задач использовались WMI-классы (например, Win32_ScheduledJob), которые имели ограниченные возможности. В Windows 7 и Windows Server 2008 R2 (2009 год) был представлен новый модуль ScheduledTasks, основанный на COM-объекте TaskScheduler и предоставляющий более полный набор командлетов. Командлет Get-ScheduledTask стал частью этого модуля, заменив устаревшие методы и обеспечив интеграцию с объектной моделью PowerShell.
Модуль ScheduledTasks по умолчанию доступен в Windows 8, Windows 10, Windows 11, а также в серверных версиях Windows Server 2012 и новее. Для его использования требуется версия PowerShell не ниже 3.0. Командлет Get-ScheduledTask является одним из базовых инструментов для работы с задачами, наряду с New-ScheduledTask, Set-ScheduledTask, Start-ScheduledTask и Stop-ScheduledTask.
Синтаксис и параметры
Командлет Get-ScheduledTask имеет несколько вариантов синтаксиса, позволяющих получать задачи по различным критериям:
Основной синтаксис
`` Get-ScheduledTask [[-TaskName] <String[]>] [[-TaskPath] <String[]>] [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [<CommonParameters>] ``
Параметры
-TaskName— задаёт имя задачи или маску для поиска. Можно использовать подстановочные знаки (*). Если параметр опущен, возвращаются все задачи в указанном пути.-TaskPath— путь к папке в планировщике задач (например,\Microsoft\Windows\). По умолчанию — корневая папка (\). Можно использовать подстановочные знаки.-CimSession— позволяет подключаться к удалённым компьютерам через CIM-сессию (Common Information Model). Требует права администратора на целевой системе.-ThrottleLimit— ограничение числа одновременных операций при работе с удалёнными сессиями (по умолчанию — 32).
Примеры использования: ```powershell
Получить все задачи
Get-ScheduledTask
Получить задачу по имени
Get-ScheduledTask -TaskName "GoogleUpdateTaskMachineCore"
Получить задачи по маске
Get-ScheduledTask -TaskName "Adobe*"
Получить задачи из определённой папки
Get-ScheduledTask -TaskPath "\Microsoft\Windows\WindowsUpdate\" ```
Возвращаемые объекты
Командлет возвращает объекты типа CimInstance класса MSFT_ScheduledTask (из пространства имён Root/Microsoft/Windows/TaskScheduler). Каждый объект содержит следующие ключевые свойства:
- TaskName — имя задачи (строка).
- TaskPath — полный путь к задаче в иерархии планировщика (например,
\Microsoft\Windows\Defrag\ScheduledDefrag). - State — текущее состояние задачи (числовое значение: 0 — Disabled, 1 — Ready, 2 — Running, 3 — Blocked, 4 — Queued).
- Enabled — булево значение, указывающее, включена ли задача.
- Actions — массив действий, выполняемых задачей (запуск программы, отправка email и т.д.).
- Triggers — массив триггеров, запускающих задачу (по времени, при событии, при загрузке системы и т.д.).
- Principal — информация об учётной записи, от имени которой выполняется задача.
- Settings — дополнительные настройки (например, разрешение выполнения при простое, остановка при превышении времени и т.д.).
Пример вывода (сокращённый): `` TaskPath TaskName State -------- -------- ----- \Microsoft\Windows\AppID\ SmartScreenSpecific Ready \Microsoft\Windows\Application Experience\ Microsoft Compatibility Appraiser Ready ``
Для получения полной информации о задаче используется командлет Get-ScheduledTaskInfo или обращение к свойствам объекта через Select-Object.
Применение в администрировании
Мониторинг и аудит
Администраторы используют Get-ScheduledTask для быстрой проверки состояния запланированных задач на локальном или удалённом компьютере. Например, можно вывести список всех отключённых задач: ``powershell Get-ScheduledTask | Where-Object { $_.State -eq 0 } ``
Управление через сценарии
Командлет часто применяется в скриптах PowerShell для автоматизации. Например, для массового включения или отключения группы задач: ``powershell Get-ScheduledTask -TaskPath "\MyTasks\" | ForEach-Object { Disable-ScheduledTask -TaskName $_.TaskName } ``
Удалённое управление
С помощью параметра -CimSession можно получать задачи с удалённых машин, не устанавливая дополнительное программное обеспечение. Это требует настройки WinRM (Windows Remote Management) и соответствующих прав.
Ограничения и особенности
- Командлет не возвращает детальные сведения о триггерах и действиях по умолчанию — для этого нужно дополнительно обращаться к свойствам
ActionsиTriggersчерезSelect-Object -ExpandProperty. - Для работы с задачами, созданными в старых версиях Windows (например, Windows XP), может потребоваться использование WMI-командлета
Get-WmiObject Win32_ScheduledJob. - Начиная с Windows 10 версии 1809, некоторые системные задачи защищены и не могут быть изменены или просмотрены без прав администратора.
- Командлет не поддерживает фильтрацию по дате создания или последнего выполнения — для этого необходимо использовать
Get-ScheduledTaskInfo.
Примеры практического использования
1. Получение списка задач, запускающихся при загрузке системы
``powershell Get-ScheduledTask | Where-Object { $_.Triggers -match "BootTrigger" } ``
2. Экспорт информации о задачах в CSV-файл
``powershell Get-ScheduledTask | Select-Object TaskName, TaskPath, State, Enabled | Export-Csv -Path "tasks.csv" -NoTypeInformation ``
3. Проверка статуса конкретной задачи на удалённом компьютере
``powershell $session = New-CimSession -ComputerName "SRV-01" Get-ScheduledTask -CimSession $session -TaskName "MyBackupTask" Remove-CimSession $session ``
Связь с другими командлетами
Командлет Get-ScheduledTask входит в экосистему модуля ScheduledTasks, который включает:
- New-ScheduledTask — создание новой задачи.
- Set-ScheduledTask — изменение существующей задачи.
- Disable-ScheduledTask / Enable-ScheduledTask — отключение/включение задачи.
- Start-ScheduledTask / Stop-ScheduledTask — ручной запуск/остановка задачи.
- Get-ScheduledTaskInfo — получение расширенной информации о задаче (время последнего запуска, результат и т.д.).
Безопасность
Для выполнения Get-ScheduledTask требуются права администратора на локальном компьютере или соответствующие привилегии на удалённой системе. В Windows 10 и 11, а также в Windows Server 2016 и новее, доступ к некоторым системным задачам (например, в папке \Microsoft\Windows\) ограничен даже для администраторов — для их просмотра может потребоваться запуск PowerShell от имени системы (SYSTEM). Командлет не изменяет состояние системы и считается безопасным для использования в сценариях мониторинга.
Источники
- Microsoft Docs: «Get-ScheduledTask (ScheduledTasks)» — официальная документация командлета.
- «Windows PowerShell Cookbook» by Lee Holmes (3rd edition, 2013) — раздел, посвящённый управлению задачами.
- «PowerShell for Sysadmins» by Adam Bertram (2020) — практические примеры использования командлета.
- Документация по планировщику задач Windows (Task Scheduler) — MSDN.
- Статья «Understanding Scheduled Tasks in Windows» на TechNet (архив).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →