Équivalent PowerShell de l'esperluette (&) bash pour créer des processus en arrière-plan

Équivalent PowerShell de l’esperluette (&) bash pour créer des processus en arrière-plan

Tant que la commande est un exécutable ou un fichier ayant un exécutable associé, utilisez Start-Process (disponible depuis la v2) :

Start-Process -NoNewWindow ping google.com

Vous pouvez également ajouter ceci comme fonction dans votre profil :

function bg() {Start-Process -NoNewWindow @args}

et alors l’invocation devient :

bg ping google.com

À mon avis, Start-Job est excessif pour le simple cas d’utilisation d’exécuter un processus en arrière-plan :

  • Start-Job n’a pas accès à votre portée existante (car il s’exécute dans une session séparée). Vous ne pouvez pas faire « Start-Job {notepad $myfile} »

  • Start-Job ne préserve pas le répertoire courant (car il s’exécute dans une session séparée). Vous ne pouvez pas faire « Start-Job {notepad myfile.txt} » où myfile.txt est dans le répertoire courant.

  • La sortie n’est pas affichée automatiquement. Vous devez exécuter Receive-Job avec l’ID de la tâche comme paramètre.

REMARQUE : Concernant votre exemple initial, « bg sleep 30 » ne fonctionnerait pas car sleep est une cmdlet PowerShell. Start-Process ne fonctionne que lorsque vous créez réellement un processus séparé.