Ich versuche, Informationen vom Task Scheduler
lokalen Computer in einem PowerShell
Skript auszudrucken, damit andere Benutzer diese Informationen ebenfalls ausdrucken können und nicht auf die zugreifen müssen Task Scheduler
. Ich brauche das Skript zum Ausdrucken
- Name,
- Status,
- löst aus,
- nächste Laufzeit,
- letzte Laufzeit,
- letztes Laufergebnis,
- Autor,
- erstellt.
Ich kann die Informationen über den Namen, die nächste Laufzeit und die letzte Laufzeit ausdrucken, aber der Rest wird nicht gedruckt, wenn ich das Skript ausführe.
Ich habe bereits einen kleinen Anfang mit meinem Skript gemacht und die Felder heruntergefahren.
$schedule = new-object -com("Schedule.Service")
$schedule.connect()
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks | select Name,Status,Triggers,NextRunTime,LastRunTime,LastRunResult,Author,Created | ft
foreach ($t in $tasks)
{
foreach ($a in $t.Actions)
{
$a.Path
}
}
Jede Hilfe oder Anregungen wäre dankbar.
Unten ist ein Screenshot mit dem, wonach ich suche und welche Felder keine Daten ausdrucken:
$Tasks | Get-Member
was bekommst du?$tasks
enthält. Es werden nicht alle haben , dass Sie ausgeben wollen:Name
,Path
,State
,Enabled
,LastRunTime
,LastTaskResult
,NumberOfMissedRuns
,NextRunTime
,Definition
,Xml
.get.Triggers
um die Trigger für diese Aufgabe zu ziehen?Antworten:
Dies könnte ein wenig bereinigt werden (dh LastRunResult-Codes zuordnen). Lass es mich wissen falls du Hilfe benötigst. Trigger sind etwas schwieriger, da ich nicht glaube, dass die einfache englische Darstellung, die Sie beim Anzeigen einer Aufgabe in der GUI sehen, im COM-Objekt vorhanden ist. Ich glaube, es müsste aus dem
TriggerCollection
eingelagerten gebaut werdenRegisteredTask.Definition.Triggers
quelle
invoke-command -ComputerName REMOTEPC -ScriptBlock { --Paste Entire Script Block Here-- }
foreach ($o in $out) {$o.PSObject.Properties | ?{$_.Value -ne $null} | ft Name,Value}
nur Eigenschaften auflisten, die nicht null sind. Die Ausgabe sieht ein bisschen funky aus, sollte aber funktionieren.Server 2012 R2 und Windows 8.1 verfügen über Taskplaner-Cmdlets. Dieses Modul kann kopiert und auf einem Windows 7-Computer verwendet werden. Vermutlich benötigt es auch das neueste .NET und das Windows Management Framework. Ich kann geplante Aufgaben deaktivieren und wieder aktivieren sowie Aufgabeninformationen anzeigen. Derzeit sind mir keine integrierten Cmdlets bekannt, die mir diese Informationen geben oder dieses Steuerelement zulassen.
So listen Sie alle geplanten Aufgaben auf dem Computer auf:
Sie können die folgenden Mitglieder aus dem Tasksequenzobjekt abrufen:
quelle
-Recurse
Parameter wird nicht benötigt. OP Sollte dies idealerweise verwenden, anstatt das Rad neu zu erfinden.