8 votes

Interroger les tâches à l'aide de Powershell

Sur une machine Windows7, je peux exécuter une requête pour afficher toutes les tâches planifiées en utilisant schtasks.exe.

C'est très bien, mais je voudrais également filtrer le jeu de résultats en utilisant quelque chose comme

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

Le problème, c'est que je n'ai pas l'impression que Schtasks renvoie une liste correctement formatée pour que la fonction where fonctionne.

J'ai aussi essayé :

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

Ceux-ci ne fonctionnent pas non plus.

Quelle serait la meilleure façon d'interroger les tâches sur un ordinateur local utilisant Win7 et de pouvoir les filtrer ?

0 votes

Qu'est-ce que c'est que ces barres obliques inversées ? Je suis presque sûr que ce n'est pas ce que les schtasks s'y attend, mais plutôt une barre oblique vers l'avant.

0 votes

Ha ! vous avez raison. Je l'ai corrigé ci-dessus

8voto

Jason Catena Points 500

Vous pouvez essayer d'utiliser schtasks, qui vous laissera analyser du texte. Cela est presque toujours source d'erreurs, et définitivement plus difficile que de prendre la sortie d'une commande.

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

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

Puisque 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 transformé un grand nombre de lignes de commande difficiles à utiliser, comme les schtasks, en cmdlets faciles à utiliser, comme Get-ScheduledTask.

Voir aussi :

Envoi de courriels automatisés à l'aide du module TaskScheduler

J'espère que cela vous aidera

1 votes

Cela fonctionne très bien si vous utilisez des boîtiers Win2k8 (ou vista/W7). Malheureusement, elle ne fonctionne pas avec les serveurs W2k3 (qui sont encore très courants dans mon environnement).

0 votes

@MikeShepard Si vous voulez les nouveaux jouets, vous devez arrêter d'utiliser des systèmes d'exploitation vieux de 11 ans.

1 votes

C'est l'histoire de ma carrière :-(

2voto

Marcel Jackwerth Points 101

Voici un article de blog J'ai écrit sur la façon de le faire. En gros, j'ai pris la sortie de /FO LIST /V, je l'ai écrite dans un fichier, et je l'ai réimportée en tant qu'objets en utilisant import-csv.

2 votes

Vous êtes sur la bonne voie, mais l'écriture dans un fichier temporaire n'est pas nécessaire dans ce cas : schtasks /query /fo csv /v|convertfrom-csv fonctionne très bien

0 votes

C'est bien, mais ce n'est pas encore facilement interrogeable

0 votes

Johannes : tu as raison, mais je n'aime vraiment (vraiment) pas les propriétés qui ont des espaces/colonnes/cadres intégrés. jdiaz : Qu'est-ce qui n'est pas interrogeable ? Le script que j'ai posté et la révision de Johannes renvoient tous deux des objets powershell natifs avec des propriétés. Ils devraient être aussi interrogeables que n'importe quelle autre entité powershell.

2voto

tony roth Points 3814

Si vous n'avez pas besoin de le faire dans powershell alors ce qui suit fonctionnera

schtasks /query | findstr /i "mytask"

version ps
schtasks /query | ?{$_ -like 'mytask'}

0 votes

Existe-t-il un exemple de code source complet pour la création, l'interrogation et la suppression de tâches à l'aide de PS ?

2voto

Oleks Points 141

Vous pouvez essayer :

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

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

0voto

Vous y réfléchissez 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 "schedule" (programme)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X