我知道我遲到了派對,但@Frode F.提供的答案雖然有效,但技術上不正確。
您可以通過PowerShell訪問計劃任務的Actions集合中的項目,但這不是很明顯。我今天也必須自己弄清楚這一點。
下面的代碼做這一切在PowerShell中,而不必淤泥與周圍的XML:
# I'm assuming that you have a scheduled task object in the variable $task:
$taskAction = $task.Definition.Actions.Item.Invoke(1) # Collections are 1-based
這就是全部是獲得一個項目從集合中不使用foreach
。
由於Actions
屬性是包含參數化屬性Item
的集合(例如,在C#你會寫myTask.Actions[0]
或VB myTask.Actions.Item(1)
),PowerShell中表示此Item
屬性作爲PSParameterizedProperty
對象。要調用與該屬性相關的方法,請使用Invoke
方法(用於獲取方法)和InvokeSet
方法(用於設置方法)。
我跑快速測試運行OP的代碼和它的工作對我來說(我運行的PowerShell 4.0,但是,也許有什麼用它做):
$schedule = new-object -com("Schedule.Service")
$schedule.connect()
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks | select Name, LastRunTime
foreach ($t in $tasks)
{
foreach ($a in $t.Actions)
{
Write-Host "Task Action Path: $($a.Path)" # This worked
Write-Host "Task Action Working Dir: $($a.workingDirectory)" # This also worked
}
$firstAction = $t.Actions.Item.Invoke(1)
Write-Host "1st Action Path: $($firstAction.Path)"
Write-Host "1st Action Working Dir: $($firstAction.WorkingDirectory)"
}
HTH。
謝謝,那幫助非常大!我想我一直很難將東西翻譯成Powershell(來自C#和.NET背景),或者找到可以讓你知道PS腳本的對象模型的文檔。 – 2013-03-18 14:20:31
'Get-Member'是探索新類型時的朋友:)例: '$任務| Get-Member'會給你'$ tasks'數組中對象的屬性,方法等。 – 2013-03-18 15:48:06