Interroger des schtasks à l'aide de Powershell


8

Sur une machine Windows7, j'essaie de pouvoir exécuter une requête pour afficher toutes les tâches planifiées à l'aide de schtasks.exe

C'est bien mais je voudrais aussi filtrer le jeu de résultats en utilisant quelque chose comme

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

Le problème est que je ne renvoie pas une liste correctement formatée pour que la fonction where fonctionne.

J'ai aussi essayé:

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

ça ne marche pas non plus.

Quelle serait la meilleure façon d'interroger les schtasks sur un ordinateur local à l'aide de Win7 et de pouvoir les filtrer


Qu'y a-t-il avec les barres obliques inverses là-dedans? Je suis assez sûr que ce n'est pas ce qui schtaskss'y attend, mais plutôt une barre oblique.
Joey

Ha! tu as raison. Je l'ai corrigé ci-dessus
jdiaz

Réponses:


8

Vous pouvez essayer d'utiliser des schtasks, ce qui vous laissera analyser le texte. C'est presque toujours sujet aux erreurs, et certainement plus difficile que de prendre la sortie d'une commande.

Il se trouve qu'il y a un module TaskScheduler dans PowerShellPack . Une fois que vous avez installé le pack PowerShell, pour obtenir toutes les tâches planifiées, utilisez:

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

Comme ce sont des objets réels, pour trouver une tâche d'un nom particulier, vous pouvez utiliser:

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

En général, vous constaterez que la communauté PowerShell a pris beaucoup plus de mal à utiliser les lignes de commande, comme les schtasks, et les a transformées en applets de commande faciles à utiliser, comme Get-ScheduledTask.

Voir également:

Envoi d'e-mails automatisés à l'aide du module TaskScheduler

J'espère que cela t'aides


1
Cela fonctionne très bien si vous utilisez des boîtes Win2k8 (ou Vista / W7). Malheureusement, cela ne fonctionne pas avec les serveurs W2k3 (qui sont encore très courants dans mon environnement).
Mike Shepard

@MikeShepard Si vous voulez les nouveaux jouets, vous devez cesser d'utiliser des systèmes d'exploitation vieux de 11 ans.
Ryan Ries

1
Voilà l'histoire de ma carrière. :-(
Mike Shepard

2

si vous n'avez pas besoin de le faire en PowerShell, alors ce qui suit fonctionnera

schtasks / query | findstr / i "mytask"


schtasks / requête de la version ps | ? {$ _-like 'mytask'}


tout exemple de code source complet pour créer, interroger et supprimer des tâches à l'aide de PS?
Kiquenet

2

Voici un article de blog que j'ai écrit à ce sujet. Essentiellement, j'ai pris la sortie de / FO LIST / V, l'ai écrit dans un fichier et l'ai importé en tant qu'objets en utilisant import-csv


2
Vous êtes sur la bonne voie mais il n'est pas nécessaire d'écrire dans un fichier temporaire ici: ça schtasks /query /fo csv /v|convertfrom-csvmarche très bien
Joey

c'est soigné mais toujours pas facilement interrogable
jdiaz

Johannes: vous avez raison, mais je n'aime pas vraiment (vraiment) les propriétés qui ont des espaces / deux-points / barres obliques intégrés. jdiaz: Qu'est-ce qui n'est pas interrogable? Le script que j'ai publié et la révision de Johannes renvoient tous deux des objets PowerShell natifs avec des propriétés. Ils devraient être aussi interrogeables que toutes les autres entités PowerShell.
Mike Shepard

1
Vraiment - ils sont interrogeables ... schtasks /query /fo csv /v /s "myserver" | convertfrom-csv | Select TaskName, "Last Run Time", Author | ? {$_.Author -notmatch "microsoft|N/A|Author"}vous fournira toutes les tâches planifiées personnalisées que vous avez.
SliverNinja - MSFT

2

Vous pouvez essayer:

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

L'astuce consiste à convertir d'abord la sortie en CSV, puis à revenir à un objet PowerShell.


0

Vous y pensez trop.

Ligne de commande pour ce que vous voulez schtasks / query / s% computername% | FIND / I "% name_of_task%"

exemple schtasks / query / s server01 | FIND / I "planning"


-2

La meilleure option est d'Alex car vous n'avez pas besoin de bibliothèque et vous convertirez les réponses de la chaîne à partir de schtasks dans l'objet Powershell.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.