<p>Tant que la commande est un exécutable ou un fichier ayant un exécutable associé, utilisez <strong>Start-Process</strong> (disponible depuis la v2) :</p>
<pre><code class="lang-auto">Start-Process -NoNewWindow ping google.com
</code></pre>
<p>Vous pouvez également ajouter ceci comme fonction dans votre profil :</p>
<pre><code class="lang-auto">function bg() {Start-Process -NoNewWindow @args}
</code></pre>
<p>et alors l’invocation devient :</p>
<pre><code class="lang-auto">bg ping google.com
</code></pre>
<p>À mon avis, Start-Job est excessif pour le simple cas d’utilisation d’exécuter un processus en arrière-plan :</p>
<ul>
<li>
<p>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} »</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>La sortie n’est pas affichée automatiquement. Vous devez exécuter Receive-Job avec l’ID de la tâche comme paramètre.</p>
</li>
</ul>
<p>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é.</p>