Powershell 5.x : Where Stament

ral9004

Lieutenant
Registriert
Dez. 2017
Beiträge
569
Hallo

Die Windows Scheduler Tasks, welche den Status "Ready" haben, kann ich anzeigen:

PowerShell:
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"} | Select-Object TaskName, TaskPath, State, LastRunTime, NextRunTime, NextScheduledRunTime, Author

In einem weiteren Schritt möchte ich die Task sehen, die "Ready" sind und keinen Eintrag im Feld "NextRun" haben. Die Aufgabenplanung zeigt mir zirka 55% ohne Datum / Zeit in NextRun

Mit dieser Anweisung erhalte ich jedoch keinen Datensatz zurück. Kein Task ist "ready" und hat keinen Eintrag in "NextRun"

PowerShell:
Get-ScheduledTask | Where-Object {$_.State -eq "Ready" -and $_.NextRun -ne $null} | Select-Object TaskName, TaskPath, State, LastRunTime, NextRunTime, NextScheduledRunTime, Author

Die Syntax ist korrekt. Wenn ich den Status mit dem Feld "Author" kombiniere funktioniert es:

PowerShell:
Get-ScheduledTask | Where-Object {$_.State -eq "Ready" -and $_.Author -eq "borg\locutus"} | Select-Object TaskName, TaskPath, State, LastRunTime, NextRunTime, NextScheduledRunTime, Author

Hinweise zur Lösung auch in Form eines konkreten Buches oder Website werden dankend angenommen.

Grüsse an die Foristen
 
Code:
PS > (Get-ScheduledTask)[0] | select *


State                 : Ready
Actions               : {MSFT_TaskExecAction}
Author                : me
Date                  : 2021-10-18T15:24:07
Description           :
Documentation         :
Principal             : MSFT_TaskPrincipal2
SecurityDescriptor    :
Settings              : MSFT_TaskSettings3
Source                :
TaskName              : AMDAutoUpdate
TaskPath              : \
Triggers              : {MSFT_TaskDailyTrigger}
URI                   : \AMDAutoUpdate
Version               :
PSComputerName        :
CimClass              : Root/Microsoft/Windows/TaskScheduler:MSFT_ScheduledTask
CimInstanceProperties : {Actions, Author, Date, Description...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

Es gibt kein "NextRun" Property.

Hast du AI gefragt?
 
So wie ich das sehe gibt es keine nextrun Variable auf der Ebene

1712087624849.png


So wie's aussieht suchst du get-scheduledtaskinfo

https://learn.microsoft.com/en-us/p...t-scheduledtaskinfo?view=windowsserver2022-ps

1712087717517.png


Das war auch das erste Ergebnis für eine Google Suche nach "powershell get task nextrun"...

Den Rest bekommst du denke ich selbst hin?
 
  • Gefällt mir
Reaktionen: kartoffelpü
NextRunTime erzeugt auch keinen Hit

nextruntime.png

Ergänzung ()

Und ich habe Task wo beide Eigenschaften übereinstimmen

nextruntime1.png
 
ral9004 schrieb:
NextRunTime erzeugt auch keinen Hit
Nochmal den unteren Screenshot von @Rickmer aus #3 genauer anschauen. get-scheduledtask | get-scheduledtaskinfo...
Das fehlt bei dir noch.
 
Rickmer schrieb:
Das war auch das erste Ergebnis für eine Google Suche nach "powershell get task nextrun"...

Den Rest bekommst du denke ich selbst hin?
Hallo Rickmer

Ziel verfehlt.
Ich suche die geplanten Task ("Ready"), die keine Ausführungszeit haben. Ergo nicht zu einer bestimmten Zeit oder Datum laufen werden.

Auch ein paar informative Websites:
https://devblogs.microsoft.com/scri...r-use-powershell-to-document-scheduled-tasks/

https://activedirectorypro.com/list-scheduled-tasks-using-powershell/#local

ChatGPT kann es nicht lösen. Gemini / Copilot habe ich noch nicht gefragt.

Grüsse
Ergänzung ()

Hallo Kartoffelpü

Anscheinend kann ich mein Ziel nicht in die richtigen Worte fassen.
Danke in jedem Fall für das Feedback.

Einen schönen Abend wünsche ich
 
ral9004 schrieb:
Ziel verfehlt.
Ich suche die geplanten Task ("Ready"), die keine Ausführungszeit haben. Ergo nicht zu einer bestimmten Zeit oder Datum laufen werden.
Ich sehe, den Rest bekommst du nicht hin.

PowerShell:
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"} | get-scheduledtaskinfo | where {$_.NextRunTime -eq $null}
 
  • Gefällt mir
Reaktionen: ral9004
Code:
Get-ScheduledTask | ? { $_.Status -eq "Ready" -and $_.NextRunTime -ne $null }
 
@Yuuri hast du auch einmal versucht deinen Code auszuführen bevor du den postest?
 
Yuuri schrieb:
Nein, natürlich nicht...
Dann weiß ich nicht was mit deinem System gemacht hat, weil bei mir - wie auch beim TE - kommt bei dem Code nur $null zurück, da get-scheduledtask keine Eigenschaft NextRunTime ausgibt.
 
Copilot hat es gelöst:

$outcsv = "c:\temp\taskdef.csv"

Get-ScheduledTask | Where-Object {$.State -eq "Ready" -and $.Author -eq "Borg\locutus"} |
ForEach-Object {
$info = $_ | Get-ScheduledTaskInfo
if ($info.NextRunTime -ne $null) {
[pscustomobject]@{
Name = $_.TaskName
Path = $_.TaskPath
LastResult = $($info.LastTaskResult)
NextRun = $($info.NextRunTime)
Status = $_.State
Command = $_.Actions.execute
Arguments = $_.Actions.Arguments
}
}
} | Export-Csv -Path $outcsv -NoTypeInformation

Man klebt an seinen Gewohnheiten. D.h. ich habe schon längere Zeit ChatGPT benutzt, dass ich andere KIs nicht mehr im Blick habe... Shame on me 🙄🤨
 
ral9004 schrieb:
Get-ScheduledTask | Where-Object {$.State -eq "Ready" -and $.Author -eq "Borg\locutus"} |
ForEach-Object {
$info = $_ | Get-ScheduledTaskInfo
if ($info.NextRunTime -ne $null)
Letztendlich dasselbe wie ich in Beitrag #7 geschrieben habe, nur umständlicher...
 
  • Gefällt mir
Reaktionen: ral9004
Hallo Rickmer

Korrekt.
Zu diesem Zeitpunkt hatte ich bereits einen Austausch mit Copilot.
D.h. Post 7 habe ich erst jetzt gesehen.

Und ja - Dein Code ist kompakter 🧐 🤗

Grüsse an alle Foristen
 
Zurück
Oben