Список задач
Командлет | Описание |
---|---|
Get-ScheduledTask | комадлет покажет список всех задач и другую информацию если использовать параметры -taskname, -taskpath, -state. |
Get-ScheduledTaskInfo | покажет детальную информацию, как время последнего и следующего запуска. |
Но чтобы увидеть от какого имени запускается задача, нужно использовать утилиту schtasks.exe. Get-ScheduledTask показывает пользователей частично.
schtasks.exe /query /V /FO CSV | ConvertFrom-Csva|?{$_."run as user" -match "MyUser"} |select taskname # Выводит от чьего имени запускается задание в одном поле "Run As User", группы и пользователи в перемешку. schtasks.exe /query /V /FO CSV | ConvertFrom-Csv |select taskname,"run as user" | sort -property taskname -Unique # Запуск может быть как от пользователя, так и от группы Get-ScheduledTask | select taskname,@{n="user";e={$_.principal.userid}},@{n="group";e={$_.principal.groupid}},taskpath | ft -a
Автоматический запуск задач
New-Task | Add-TaskAction -Hidden -Script { $ErrorActionPreference = "Stop" try { $messageParameters = @{ Subject = "Installed Program report for $env:ComputerName.$env:USERDNSDOMAIN - $((Get-Date).ToShortDateString())" Body = Get-WmiObject Win32_Product | Select-Object Name, Version, Vendor | Sort-Object Name | ConvertTo-Html | Out-String From = "Me@MyCompany.com" To = "Me@MyCompany.com" SmtpServer = "SmtpHost" } Send-MailMessage @messageParameters -BodyAsHtml } catch { $_ | Out-File $env:TEMP\ProblemsSendingHotfixReport.log.txt -Append -Width 1000 } } | Add-TaskTrigger -Daily -At "9:00 AM" | Add-TaskTrigger -OnRegistration | Register-ScheduledTask "DailyHotfixReport"
Добавление задачи из XML в Task Scheduler
Register-ScheduledTask -xml (Get-Content 'C:\MyData\MyTask.xml' | Out-String) -TaskName "Start DC" -TaskPath "\" -User administrator -Force
Вывод списка задач и имени пользователя, от которого запускаются задачи
$tasks = Get-ScheduledTask -TaskPath "\" | ?{$_.Author -match "myuser"} foreach ($task in $tasks) { $info = Get-ScheduledTaskInfo -TaskName $task.TaskName -TaskPath $task.TaskPath [PSCustomObject]@{ Имя_задачи = $task.TaskName Путь = $task.TaskPath Запуск_от = $task.Principal.UserId Последний_запуск = $info.LastRunTime Статус = $info.LastTaskResult } }