我正在使用Powershell通过任务调度程序2.0接口(例如ITaskDefinition)通过COM与Windows 7任务调度程序服务进行通信.我想从ITaskDefinition上的Triggers集合中提取一个特定的触发器.似乎提取特定触发器的正确方法是通过Item属性,它是一个索引属性.
我的第一次尝试看起来像这样:
$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$folder = $sched.GetFolder('\')
$task = $folder.GetTask("some task")
$triggers = $task.Definition.Triggers
$trigger = $triggers[0]
Run Code Online (Sandbox Code Playgroud)
但是,最后一行失败并显示以下消息:
Unable to index into an object of type System.__ComObject.
Run Code Online (Sandbox Code Playgroud)
我在这个主题上尝试过其他一些变化,例如$triggers.Item(0)
,一切都没有运气.我猜这与$trigger
作为COM对象有关,因为我认为索引属性在其他类型上运行良好.
有谁知道这样做的正确方法?
物品确实有效.您必须使用Item()而不是Item [],并且索引是从1开始的.
$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$folder = $sched.GetFolder('\')
$task = $folder.GetTask("Update Bin Dir")
$triggers = $task.Definition.Triggers
$triggers.Item(1)
Type : 2
Id : 67a9fad4-462f-43d9-ab71-6e9b781966e6
Repetition : System.__ComObject
ExecutionTimeLimit :
StartBoundary : 2007-07-02T05:30:00
EndBoundary :
Enabled : True
DaysInterval : 1
RandomDelay :
Run Code Online (Sandbox Code Playgroud)
如果您不需要通过索引访问,则使用枚举器也可以使用:
foreach ($trigger in $triggers) { $trigger }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6054 次 |
最近记录: |