PowerShell : Programmation MultiTâches

Il peut être intéressant, afin d’optimiser le temps de traitement de tâches n’ayant pas un impact lourd sur les ressources du PC, de les lancer en parallèle.

Le langage de script de Microsoft – PowerShell – permet de réaliser cela très facilement.

Considérons, la séquence de code simple :

$ScriptBlock
= {

    param($display)

    Write-Host
$display

    Start-Sleep 5

}

Ce code reçoit en paramètre une chaine de caractère ; laquelle est affichée à l’écran puis après 5 secondes, l’exécution est terminée.

Nous allons lancer cette séquence 10 fois – en parallèle. Chaque tâche affichera un message différent.

Write-Host
“== Lancement des tâches”

for ($i=1; $i
-le 10; $i++)

{

    Start-Job
$ScriptBlock
-ArgumentList
“Message$i”

}

Ensuite nous allons attendre la fin de l’exécution de toutes ces tâches.

Write-Host
“== Attente de la fin des tâches”

While (Get-Job
-State
“Running”)

{

    Start-Sleep 5

}

Une fois toutes les tâches terminées, on peut récupérer les messages affichés par celles-ci.

Write-Host
“==Affichage du résultat des tâches”

Get-Job | Receive-Job

Finalement, on purge les tâches du contexte d’exécution.

Write-Host
“== Nettoyage des tâches”

Remove-Job
*

Ce petit programme affichera les messages ci-dessous lors de son exécution.

== Lancement des tâches

Id Name State HasMoreData Location Command

— —- —– ———– ——– ——-

61 Job61 Running True localhost …

63 Job63 Running True localhost …

65 Job65 Running True localhost …

67 Job67 Running True localhost …

69 Job69 Running True localhost …

71 Job71 Running True localhost …

73 Job73 Running True localhost …

75 Job75 Running True localhost …

77 Job77 Running True localhost …

79 Job79 Running True localhost …

== Attente de la fin des tâches

==Affichage du résultat des tâches

Message10

Message9

Message8

Message7

Message6

Message5

Message4

Message3

Message2

Message1

== Nettoyage des tâches

A propos Olivier Olejniczak

Cofondateur de SynerGeek.fr. Passionné d'informatique, je m'intéresse plus particulièrement aux technologies de virtualisation et de stockage. J'apprécie la liberté et la quasi-absence de frontières à mon imagination qu'offre l'OpenSource et Linux. Professionnellement, je travaille exclusivement avec les outils Microsoft. Les pieds bien sur terre et ancrés dans le quotidien de l'entreprise, j'aime faire partager mes découvertes et contribuer à un meilleur usage des technologies. Vous aussi, rejoignez-nous sur Synergeek et partagez votre expérience!

Je vous propose également...

JSON dans les scripts Bash avec Ticktick

Je vais vous présenter l’ami du WGET par excellence. Imaginez le contexte suivant : sur …

Maintenir son site web perso : une plaie !

Un blog, un compte Twitter, un compte viadeo, un compte LikeDin, un compte Google+, un …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.