É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é.