Comment puis-je empêcher Windows Powershell de se bloquer lorsque j'exécute une commande dessus? Je sais que sous Linux, vous pouvez ajouter & à la fin d'une commande pour pouvoir continuer à utiliser le terminal sans fermer ce processus. Y a-t-il quelque chose de similaire pour Windows Powershell?
Réponses
Trop de publicités?Comment empêcher Windows Powershell de se bloquer lorsque je lance une commande?
Utilisez le Start-Job
cmdlet pour démarrer des tâches en arrière-plan.
Ceci est l'équivalent en Powershell de l'utilisation de &
à la fin d'une commande dans Unix/Linux.
Tâches en arrière-plan PowerShell
La manière la plus simple de créer une tâche en arrière-plan PowerShell est d'utiliser le cmdlet
Start-Job
. Vous pouvez spécifier un bloc de script avec le cmdlet. Par exemple, la commande suivante exécute un bloc de script simple qui obtient les nombres entre 1 et 50 en tant que tâche en arrière-plan:Start-Job {1..50}
Vous pouvez passer des arguments à un bloc de script avec cette commande en une seule ligne:
Start-Job {Param($log,$newest) Get-EventLog $log Newest $newest} -ArgumentList "system",25
Ou vous pouvez exécuter des scripts:
Start-Job -FilePath C:\scripts\Send-UptimeMail.ps1 -ArgumentList (Get-Credential jhicks@jdhitsolutions.com)
Vous pouvez voir les résultats de ces trois commandes ci-dessous. J'ai exécuté ces commandes dans PowerShell 3.0. Cependant, elles fonctionneront aussi dans PowerShell 2.0, bien que vous ne verrez pas la colonne PSJobTypeName.
La sortie de
Start-Job
est un objet de file d'attente de tâche. Vous utilisez le cmdlet-Job
pour gérer les tâches et leurs résultats. Vous pouvez référencer les tâches par un ID. Dans l'image ci-dessus, remarquez comment les IDs de tâches passent de 1 à 3 à 5.
Source Tâches en arrière-plan PowerShell
Le lien ci-dessus donne beaucoup plus de détails en couvrant les sujets suivants:
-
Utilisation du cmdlet
Get-WMIObject
pour créer des tâches en arrière-plan -
Utilisation du cmdlet
Invoke-Command
pour créer des tâches en arrière-plan -
Gestion des tâches en arrière-plan
-
Récupération des résultats des tâches
-
Arreter et Attendre pour les Tâches
Lecture supplémentaire
Comme alternative à Jobs, vous pouvez utiliser Runspaces: ils offrent de meilleures performances et moins de surcharge pour exécuter des commandes en arrière-plan.
Implémentations: