如何通过 PowerShell Cmdlet 从 schtasks.exe 获取所有可用信息?

How do I get all the information available from schtasks.exe via PowerShell Cmdlets?

提问人:gerard 提问时间:3/31/2022 更新时间:12/30/2022 访问量:3757

问:

当我在 Windows 服务器上使用 PowerShell Cmdlet 时,我获得了以下数据Get-ScheduledTaskInfo

LastRunTime        : 22/04/1932 11:30:30
LastTaskResult     : 267011
NextRunTime        :
NumberOfMissedRuns : 0
TaskName           : \Microsoft\Windows\Workplace Join\Recovery-Check
TaskPath           :
PSComputerName     :

但是,当我使用 schtasks.exe 在同一 Windows 服务器上查询相同的计划任务时,我会得到更多信息,如下所示。

HostName                             : ELT-W-PRD-AP-12
TaskName                             : \Microsoft\Windows\Workplace Join\Recovery-Check
Next Run Time                        : N/A
Status                               : Disabled
Logon Mode                           : Interactive/Background
Last Run Time                        : 30/11/1999 00:00:00
Last Result                          : 267011
Author                               : N/A
Task To Run                          : %SystemRoot%\System32\dsregcmd.exe /checkrecovery
Start In                             : N/A
Comment                              : Performs recovery check.
Scheduled Task State                 : Disabled
Idle Time                            : Disabled
Power Management                     :
Run As User                          : INTERACTIVE
Delete Task If Not Rescheduled       : Disabled
Stop Task If Runs X Hours and X Mins : 02:00:00
Schedule                             : Scheduling data is not available in this format.
Schedule Type                        : At logon time
Start Time                           : N/A
Start Date                           : N/A
End Date                             : N/A
Days                                 : N/A
Months                               : N/A
Repeat: Every                        : N/A
Repeat: Until: Time                  : N/A
Repeat: Until: Duration              : N/A
Repeat: Stop If Still Running        : N/A

如何使用 PowerShell cmdlet 从计划任务中提取相同的信息,而不是依赖于 schtasks.exe?

PowerShell 计划任务 Windows-Task-Scheduler

评论

3赞 Mathias R. Jessen 3/31/2022
通过组合 和 的输出Get-ScheduledTaskGet-ScheduledTaskInfo
0赞 gerard 3/31/2022
我不明白你的意思@MathiasR.Jessen。我从中得到的只是一个计划任务列表。因此,如果我将其与 我将获得每个计划任务的 7 个值。但是我可以使用 为计划任务获取 28 个不同的值。Get-ScheduledTaskGet-ScheduledTaskInfoschtasks.exe
2赞 Abraham Zinala 3/31/2022
那是因为它的默认格式。PowerShell 通常不会显示超出应有的内容。因此,请查看从返回的属性,并在属性中扩展它们,因为它们是属性。或。Get-ScheduledTaskInfoGet-ScheduledTask -TaskName usertask | Get-ScheduledTaskInfo | select *Get-ScheduledTask -TaskName usertask | Get-ScheduledTaskInfo | select -exp ciminstanceproperties
0赞 gerard 4/1/2022
感谢您上面的回复,但我仍然感到困惑。我得到了工作,但这仍然只给了我与我没有看到的相同的信息(即 LastRunTime、LastTaskResult 等)。我怎样才能看到这样的信息,这些信息可以通过以下方式获得?select *Get-ScheduledTaskInfoselect *task to runschtasks.exe

答:

1赞 Mike Anthony 4/1/2022 #1

当您使用 schtasks 进行搜索时,您使用了 /Verbose 标志 - 您需要在此处执行相同的操作,然后还说您要查看检索属性的整个列表。

$info = Get-ScheduledTask -TaskName Test -Verbose | select -Property *
$info
write-host "Task's actions are" $info.actions "and triggers are" $info.Triggers
$runtimeInfo = Get-ScheduledTaskInfo $info.TaskName | select -property *
write-host "Last runtime info is" $runtimeInfo

编辑:Get-ScheduledTaksInfo 将仅提供:

计划任务的上次运行时信息。