我正在尝试使用PowerShell。
我在线找到了一个有用的脚本,用于通过Windows的更新版本连接到计划的任务:
$sch = New-Object -ComObject("Schedule.Service")
$sch.Connect("10.22.8.54")
$tasks = $sch.GetFolder("").GetTasks(0)
我查看$任务的成员,并且有一个定义属性:
Definition Property ITaskDefinition Definition () {get}
我将其分配给另一个变量,并在其中查看成员,并查看有一个动作属性:
Actions Property IActionCollection Actions () {get} {set}
我将其分配给另一个变量,并看到有一个路径属性:
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]
。现在,我们可以在"操作"部分中访问命令。
您获得的结果可能取决于您要查询的操作系统。这可能解释了我们都得到的结果的差异。
如果需要,您可以在计算的属性中轻松地将其获取。