Открыть сервис

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 →