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
}
}
任何帮助或建议都将不胜感激。
下面是我正在寻找的内容以及哪些字段没有打印出数据的屏幕截图:
答案1
这可以稍微清理一下(即映射 LastRunResult 代码)。如果您需要帮助,请告诉我。触发器有点困难,因为我认为在 GUI 中查看任务时看到的纯英文表示并不存在 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
答案2
Server 2012 R2 和 Windows 8.1 具有任务计划程序 cmdlet,并且此模块可以复制并在 Windows 7 计算机上使用,大概它也需要最新的 .NET 和 Windows 管理框架。我可以禁用和重新启用计划任务,以及显示任务信息。目前我不知道有哪些内置 cmdlet 可以提供此信息或允许此控制。
列出计算机上的所有计划任务:
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 :