Назад | Перейти на главную страницу

Как распечатать информацию о планировщике задач в сценарии PowerShell?

Я пытаюсь распечатать информацию из Task Scheduler с локального компьютера в PowerShell скрипт, чтобы другие пользователи также могли распечатать эту информацию и не иметь доступа к Task Scheduler. Мне нужно распечатать сценарий

Я могу распечатать информацию об имени, времени следующего и последнего выполнения, но остальное не распечатаю, когда я запускаю скрипт.

Я уже немного начал писать свой сценарий и разобрался с полями.

$schedule = new-object -com("Schedule.Service") 
$schedule.connect() 
$tasks = $schedule.getfolder("\").gettasks(0)

$tasks | select Name,Status,Triggers,NextRunTime,LastRunTime,LastRunResult,Author,Created | ft

foreach ($t in $tasks)
{
foreach ($a in $t.Actions)
{
$a.Path
}
}

Любая помощь или предложения будут оценены.

Ниже приведен снимок экрана с тем, что я ищу, и какие поля не печатают данные:

В Server 2012 R2 и Windows 8.1 есть командлеты планировщика заданий, и этот модуль можно скопировать и использовать на компьютере под управлением Windows 7, вероятно, ему, вероятно, также потребуется последняя версия .NET и Windows Management Framework. Я могу отключать и повторно включать запланированные задачи, а также отображать информацию о задачах. В настоящее время я не знаю встроенных командлетов, которые предоставляют мне эту информацию или разрешают этот элемент управления.

Чтобы вывести список всех запланированных задач на машине:

Get-ScheduledTask

Из объекта последовательности задач можно получить следующие члены:

PS C:\BigHomie> $A = Get-ScheduledTask | select -First 1

PS C:\BigHomie> $A

       TypeName: Microsoft.Management.Infrastructure.CimInstance#Root/Microsoft/Windows/TaskScheduler/MSFT_ScheduledTask

Name                      MemberType     Definition
----                      ----------     ----------
Clone                     Method         System.Object ICloneable.Clone()
Dispose                   Method         void Dispose(), void IDisposable.Dispose()
Equals                    Method         bool Equals(System.Object obj)
GetCimSessionComputerName Method         string GetCimSessionComputerName()
GetCimSessionInstanceId   Method         guid GetCimSessionInstanceId()
GetHashCode               Method         int GetHashCode()
GetObjectData             Method         void GetObjectData(System.Runtime.Serialization.SerializationInfo info, Sys...
GetType                   Method         type GetType()
ToString                  Method         string ToString()
Actions                   Property       CimInstance#InstanceArray Actions {get;set;}
Author                    Property       string Author {get;set;}
Date                      Property       string Date {get;set;}
Description               Property       string Description {get;set;}
Documentation             Property       string Documentation {get;set;}
Principal                 Property       CimInstance#Instance Principal {get;set;}
PSComputerName            Property       string PSComputerName {get;}
SecurityDescriptor        Property       string SecurityDescriptor {get;set;}
Settings                  Property       CimInstance#Instance Settings {get;set;}
Source                    Property       string Source {get;set;}
TaskName                  Property       string TaskName {get;}
TaskPath                  Property       string TaskPath {get;}
Triggers                  Property       CimInstance#InstanceArray Triggers {get;set;}
URI                       Property       string URI {get;}
Version                   Property       string Version {get;set;}
State                     ScriptProperty System.Object State {get=[Microsoft.PowerShell.Cmdletization.GeneratedTypes...


PS C:\BigHomie> $A.Triggers


Enabled            : True
EndBoundary        :
ExecutionTimeLimit :
Id                 :
Repetition         : MSFT_TaskRepetitionPattern
StartBoundary      :
PSComputerName     :

Это можно немного поправить (например, сопоставить коды LastRunResult). Дай мне знать, если тебе понадобится помощь. Триггеры немного сложнее, поскольку я не думаю, что простое английское представление, которое вы видите при просмотре задачи в графическом интерфейсе, существует в COM-объекте. Я считаю, что его нужно было построить из TriggerCollection Хранится в RegisteredTask.Definition.Triggers

$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
    $xml = [xml]$_.xml
    $out += New-Object psobject -Property @{
        "Name" = $_.Name
        "Status" = switch($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
        "NextRunTime" = $_.NextRunTime
        "LastRunTime" = $_.LastRunTime
        "LastRunResult" = $_.LastTaskResult
        "Author" = $xml.Task.Principals.Principal.UserId
        "Created" = $xml.Task.RegistrationInfo.Date
    }
}

$out | fl Name,Status,NextRuNTime,LastRunTime,LastRunResult,Author,Created