<t>As long as the command is an executable or a file that has an associated executable, use Start-Process (available from v2):<br/>
<br/>
Start-Process -NoNewWindow ping google.com<br/>
<br/>
```<br/>
<br/>
You can also add this as a function in your profile:<br/>
<br/>
```<br/>
function bg() {Start-Process -NoNewWindow @args}<br/>
<br/>
```<br/>
<br/>
and then the invocation becomes:<br/>
<br/>
```<br/>
bg ping google.com<br/>
<br/>
```<br/>
<br/>
In my opinion, Start-Job is an overkill for the simple use case of running a process in the background:<br/>
<br/>
- Start-Job does not have access to your existing scope (because it runs in a separate session). You cannot do "Start-Job {notepad $myfile}"<br/>
<br/>
- Start-Job does not preserve the current directory (because it runs in a separate session). You cannot do "Start-Job {notepad myfile.txt}" where myfile.txt is in the current directory.<br/>
<br/>
- The output is not displayed automatically. You need to run Receive-Job with the ID of the job as parameter.<br/>
<br/>
NOTE: Regarding your initial example, "bg sleep 30" would not work because sleep is a Powershell commandlet. Start-Process only works when you actually fork a process.</t>