gpt4 book ai didi

powershell - 如何使用 ComObject 从计划任务的操作中获取路径

转载 作者:行者123 更新时间:2023-12-02 03:26:22 26 4
gpt4 key购买 nike

我正在尝试使用 PowerShell 提取有关 Windows 2003 Server 上事件计划任务的信息。

我在网上找到了一个有用的脚本,用于通过更新版本的 Windows 连接到计划任务:

$sch = New-Object -ComObject("Schedule.Service")
$sch.Connect("10.22.8.54")
$tasks = $sch.GetFolder("\").GetTasks(0)

我查看$tasks的成员,有一个Definition属性:

Definition            Property   ITaskDefinition Definition () {get}

我将其分配给另一个变量并查看其成员,发现有一个 Actions 属性:

Actions          Property   IActionCollection Actions () {get} {set}

我将其分配给另一个变量并看到有一个 Path 属性:

Path             Property   string Path () {get} {set}

实际代码行:

$tasks | %{if ($_.Enabled) {$z=$_.Definition;$y=$z.actions;$y.Path}}

这不会产生任何结果。如何获取路径?

我是 Powershell 的新手,所以不要对我太技术化。

这有效并显示了路径(以及其他信息):

$tasks | %{if ($_.Enabled) {$z=$_.Definition;$z.actions}}

但是我怎样才能得到路径呢?

最佳答案

路径在定时任务的xml数据里面。从那里提取元素将是一种结构化的方法来获得您需要的东西。

$tasks | Where-Object{$_.Enabled} | 
ForEach-Object{
([xml]$_.xml).Task.Actions.Exec.Command
}

我们使用 Where-Object 子句来只查看启用的任务。然后我们将 xml 属性转换为 [xml]。现在我们可以从操作部分访问该命令。

您获得的结果可能取决于您查询的操作系统。这或许可以解释我们得到的结果的差异。

如果需要,您可以轻松地在计算属性中获取它。

关于powershell - 如何使用 ComObject 从计划任务的操作中获取路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com