当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 获取最新的 PowerShell 计划作业结果

作者:精品下载站 日期:2024-12-14 07:39:40 浏览:16 分类:玩电脑

获取最新的 PowerShell 计划作业结果


我想我之前已经发布过这个,但无论如何,即使我发布了,我也稍微调整了这段代码。当您在 PowerShell 3.0 中创建计划作业时,默认情况下 PowerShell 会将作业运行的最后 32 次结果保留在磁盘上。如果您想检查最近的作业,这可能会有点棘手。这就是这个简短脚本发挥作用的地方。

#requires -version 3.0

#only show results for Enabled jobs
Get-ScheduledJob | where Enabled |
foreach { Get-Job $_.name -newest 1} | 
Select Name,ID,State,
@{Name="Start";Expression={$_.PSBeginTime}},
@{Name="End";Expression={$_.PSEndTime}},
@{Name="Run";Expression={($_.PSEndTime) - ($_.PSBeginTime)}} | 
Sort End -Descending

从技术上讲,这就是我真正需要的:

Get-ScheduledJob | where Enabled | foreach { Get-Job $_.name -newest 1}

该命令获取所有计划的作业(无论如何,这是您所能做的),然后过滤它们,仅保留启用的作业。 Get-Job 有一个参数用于检索最新的作业。但不幸的是,Get-ScheduledJob 中的对象没有任何与 Get-Job 匹配的属性。有一个 ID 属性,但它们用于两个不同的用途。这就是为什么我将过滤后的对象通过管道传输到 ForEach-Object,在这里我可以使用计划对象作业中的 Name 属性调用 Get-Job。

我使用的脚本更进一步,只选择了一些我感兴趣的属性。我还计算了每个作业的运行时间。我可以由此创建一个函数,但我只需调用脚本并通常格式化结果。

[玩转系统] 获取最新的 PowerShell 计划作业结果

您可能想知道为什么我不简单地将格式命令包含在我的脚本中。原因是,如果您包含格式化指令(例如格式表),那么除了将其保存到文件或打印之外,您无法对输出执行任何其他操作。通常我会使用列表,但也许明天我不会。或者也许我可能想要选择或排序。如果我格式化输出,我就不能做任何这些事情。我的建议是不要在脚本中使用任何格式命令,除非您了解限制并希望接受它。

我想我上次发表这篇文章时我得到了所有预定的工作,这看起来有点愚蠢。但现在我再想一想,或许不是。明天再来看看。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯