1 votes

Windows Powershell Bloqué

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?

0voto

DavidPostill Points 140654

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.

Figure 1: Running Scriptblocks and Scripts in the Background

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

0voto

beatcracker Points 2522

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:

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