Wie der Zugriff auf eine indizierte Eigenschaft, die auf ein COM-Objekt von Powershell
Bin ich mit Powershell zu sprechen, um die Windows 7 task scheduler service über COM durch die Task Scheduler 2.0-Schnittstellen (z.B. ITaskDefinition). Ich möchten, ziehen Sie einen bestimmten trigger aus dem Trigger Sammlung auf ITaskDefinition. Es scheint, dass die richtige Art und Weise zu extrahieren, die einen bestimmten Auslöser, durch den Artikel Eigenschaft, die eine indizierte Eigenschaft.
Meinem ersten Versuch sieht man hier:
$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$folder = $sched.GetFolder('\')
$task = $folder.GetTask("some task")
$triggers = $task.Definition.Triggers
$trigger = $triggers[0]
Jedoch die Letzte Zeile schlägt fehl mit dieser Meldung:
Unable to index into an object of type System.__ComObject.
Ich habe versucht, einige andere Variationen zu diesem Thema, z.B. $triggers.Item(0)
alle mit kein Glück. Ich vermute, dies hat zu tun mit $trigger
wird ein COM-Objekt, weil ich denke, dass indizierte Eigenschaften gut funktionieren, auf andere Arten.
Kennt jemand den richtigen Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Element funktioniert. Sie haben, um das Element zu verwenden() anstelle von Artikel[] und Indizes sind 1-basiert.
Mit einem enumerator funktioniert auch, wenn Sie nicht brauchen, um den Zugriff per index:
ProjectItem.FileNames
aber immer wenn ichForEach($fn in $projectItem.FileNames) { Write-Host $fn }
bekomme ich diese Ausgabe: "string FileNames (short) {get}
".For($i=1;$i -le $projectItem.FileNames.Length; $i++) { Write-Host $projectItem.FileNames($i) }
es funktioniert! Es ist seltsam, wie die.Length
Eigenschaft existiert trotzFileNames
nicht ein collection-Objekt selbst.Auf meinem system, es sieht aus wie es ist nur ein trigger zurückgegeben werden, für einige Aufgaben. Sie könnten versuchen, zwingen Sie zurück in ein array.