Смотрел тут свои старые скрипты, решил поделиться. Задача несложная, однако в зависимости от цели может понадобиться три разных запроса.
1️⃣ Состояние задания -
Get-ScheduledTask
Годится запрос по имени задания, в том числе неполному. Заодно выведем чуть больше инфо - полное имя, состояние, адрес.
Get-ScheduledTask -TaskName '*sync*lang*' | fl TaskName,State,URI
TaskName : Synchronize Language Settings
State : Ready
URI : \Microsoft\Windows\International\Synchronize Language Settings
Задание синхронизации языковых настроек включено.
2️⃣ Сведения о последним запуске задания -
Get-ScheduledTaskInfo
Здесь наряду с именем задания требуется еще и путь в
-TaskPath
. Либо в качестве имени указывайте URI
из запроса выше.Get-ScheduledTaskInfo -TaskName '\Microsoft\Windows\International\Synchronize Language Settings
LastRunTime : 1/25/2025 10:22:22
LastTaskResult : 0
NextRunTime :
NumberOfMissedRuns : 0
TaskName : \Microsoft\Windows\International\Synchronize Language Settings
LastTaskResult
выводит код завершения предыдущего запуска. 0
означает успех, 1
- неудачу, остальное надо смотреть по коду.⏩ На практике задачи 1 и 2 чаще объединяются в конвейер. Причем можно сходу фильтровать по неполным именам нескольких заданий, обходясь без
Where-Object
.Get-ScheduledTask -TaskName *backup*,*sync* | Get-ScheduledTaskInfo | fl TaskName,LastRunTime
3️⃣ Параметры задания -
Export-ScheduledTask
Export-ScheduledTask -TaskName '\Microsoft\Windows\International\Synchronize Language Settings'
Выводится XML, как в экспорте задания из планировщика. PowerShell легко перемещается по узлам.
[xml]$task = Export-ScheduledTask -TaskName '\Microsoft\Windows\International\Synchronize Language Settings'
$task.Task.Triggers.LogonTrigger.Delay
PT30S
Задание отложено на 30 секунд после входа в систему.
////
Создание запланированного задания в #PowerShell будет посложнее. Я показывал это в блоге, в том числе в сравнении с утилитой
schtasks
. Бывает проще импортировать подготовленный XML. Пример уже был на канале ✌️