我正在尝试使用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}}
但我如何才能获得这条路?
答案 0 :(得分:1)
路径位于计划任务的xml数据内。从那里提取元素将是一种结构化的方法来获得你需要的东西。
$tasks | Where-Object{$_.Enabled} |
ForEach-Object{
([xml]$_.xml).Task.Actions.Exec.Command
}
我们使用Where-Object
子句来查看已启用的任务。然后我们将xml
属性转换为[xml]
。现在我们可以从actions部分中访问该命令。
您获得的结果可能取决于您要查询的操作系统。它可能解释了我们得到的结果的差异。
如果需要,您可以在计算属性中轻松获取此内容。