Mientras el comando es un archivo ejecutable o un archivo que tiene un archivo ejecutable asociado, utilice Start-Proceso (disponible en v2):
Start-Process -NoNewWindow ping google.com
También puede agregar esto como una función en su perfil:
function bg() {Start-Process -NoNewWindow @args}
y luego la invocación se convierte en:
bg ping google.com
En mi opinión, Start-Job es una exageración para el caso de uso simple de ejecutar un proceso en segundo plano:
- Start-Job no tiene acceso a su alcance actual (porque se ejecuta en una sesión separada). No puede hacer "Start-Job {notepad $ myfile}"
- Start-Job no conserva el directorio actual (porque se ejecuta en una sesión separada). No puede hacer "Start-Job {notepad myfile.txt}" donde myfile.txt está en el directorio actual.
- La salida no se muestra automáticamente.Necesita ejecutar Receive-Job con la ID del trabajo como parámetro.
NOTA: Respecto a su ejemplo inicial, "bg sleep 30" no funcionaría porque sleep es un comando de Powershell. Start-Process solo funciona cuando realmente bifurca un proceso.
Estas soluciones parecen no funcionar con Windows 7. – Marcin
@Marcin - esta respuesta fue de 2008. En Windows 7, powershell 2.0 es RTM y tiene el cmdlet "start-job" para trabajos en segundo plano. – x0n
No en mi Windows 7 no es así. – Marcin