Interroga gli schtask usando Powershell


8

Su una macchina Windows7 che sto provando posso eseguire una query per visualizzare tutte le attività pianificate utilizzando schtasks.exe

Questo va bene, ma vorrei anche filtrare il set di risultati usando qualcosa di simile

schtasks /query | where { $_.TaskName -eq "myTask" } 

Il problema è che non so che schtasks restituisce un elenco correttamente formattato per la funzione dove lavorare.

Ho anche provato:

schtasks /query /FO LIST
schtasks /query | format-list | where ....

neanche quelli funzionano.

Quale sarebbe il modo migliore per interrogare gli schtask su un computer locale usando Win7 ed essere in grado di filtrarli


Cosa c'è con le barre rovesciate? Sono abbastanza sicuro che non è quello schtasksche ci si aspetta lì, ma piuttosto una barra.
Joey,

ah! hai ragione. L'ho corretto sopra
jdiaz il

Risposte:


8

Potresti provare a usare schtasks, che ti lascerà analizzare il testo. Questo è quasi sempre soggetto a errori, e sicuramente più difficile di quanto non sia prendere l'output di un comando.

È presente un modulo TaskScheduler in PowerShellPack . Dopo aver installato il pacchetto PowerShell, per ottenere tutte le attività pianificate, utilizzare:

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

Poiché si tratta di oggetti reali, per trovare un'attività con un nome specifico, è possibile utilizzare:

Get-ScheduledTask -Recurse |  Where-Object { $_.Name -like "*Task*"}

In generale, scoprirai che la community di PowerShell ha impiegato molto più tempo a utilizzare le righe di comando, come schtasks, e le ha trasformate in cmdlet di facile utilizzo, come Get-ScheduledTask.

Guarda anche:

Invio di e-mail automatizzate mediante il TaskScheduler Module

Spero che sia di aiuto


1
Funziona alla grande se stai usando le caselle Win2k8 (o Vista / W7). Sfortunatamente, non funziona con i server W2k3 (che sono ancora molto comuni nel mio ambiente).
Mike Shepard,

@MikeShepard Se vuoi i nuovi giocattoli, devi smettere di usare sistemi operativi di 11 anni.
Ryan Ries,

1
Questa è la storia della mia carriera. :-(
Mike Shepard,

2

se non è necessario farlo in PowerShell, funzionerà quanto segue

schtasks / query | findstr / i "mytask"

versione ps
schtasks / query | ? {$ _ -come 'mytask'}


qualche esempio di codice sorgente completo per creare, interrogare ed eliminare attività usando PS?
Kiquenet,

2

Ecco un post sul blog che ho scritto su come fare questo. In sostanza, ho preso l'output di / FO LIST / V, l'ho scritto in un file e l'ho importato nuovamente come oggetti usando import-csv


2
Sei sulla buona strada ma qui non è necessario scrivere su un file temporaneo: schtasks /query /fo csv /v|convertfrom-csvfunziona perfettamente
Joey,

questo è pulito ma ancora non facilmente interrogabile
jdiaz

Johannes: hai ragione, ma non mi piacciono molto (davvero) le proprietà che hanno spazi / due punti / barre incorporati. jdiaz: cosa non è interrogabile? Lo script che ho pubblicato e la revisione di Johannes restituiscono entrambi oggetti PowerShell nativi con proprietà. Dovrebbero essere interrogabili quanto qualsiasi altra entità PowerShell.
Mike Shepard,

1
Veramente - sono interrogabili ... schtasks /query /fo csv /v /s "myserver" | convertfrom-csv | Select TaskName, "Last Run Time", Author | ? {$_.Author -notmatch "microsoft|N/A|Author"}ti forniranno tutte le attività pianificate personalizzate che hai.
SliverNinja - MSFT,

2

Puoi provare:

schtasks /query /FO CSV | ConvertFrom-CSV | Where { $_.TaskName -eq "myTask" } 

Il trucco sta nel convertire prima l'output in CSV, quindi di nuovo in un oggetto PowerShell.


0

Lo stai pensando troppo.

Riga di comando per ciò che vuoi schtasks / query / s% nomecomputer% | FIND / I "% name_of_task%"

esempio schtasks / query / s server01 | TROVA / I "programma"


-2

Le migliori opzioni sono di Alex perché non hai bisogno di libreria e convertirai le risposte della stringa da schtasks nell'oggetto Powershell.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.