Démarrer un processus d'arrière-plan détaché dans PowerShell

J'ai un programme Java qui je voudrais lancer un processus en arrière-plan à partir d'un script PowerShell, semblable à la manière d'un démon s'exécute sur Linux. Le script PowerShell doit faire une ou deux choses:

  1. Exécuter le programme comme étant un processus détaché dans le fond, le sens de la fenêtre parent peut être fermé et le processus continue de fonctionner.
  2. Rediriger le programme de la sortie standard et l'erreur standard pour les fichiers.
  3. Enregistrer le PID du processus d'arrière-plan dans un fichier de sorte qu'il peut être arrêté plus tard par un autre script.

J'ai un script shell sous Linux qui démarre le programme comme suit:

$ java -jar MyProgram.jar >console.out 2>console.err &

Je suis l'espoir de reproduire le même comportement sur Windows à l'aide d'un script PowerShell. J'ai essayé d'utiliser Start-Process avec différentes combinaisons d'options, ainsi que la création de System.Diagnostics.ProcessStartInfo et System.Diagnostics.Process objets, mais jusqu'à présent, je ne suis pas du tout avoir de la chance. PowerShell, le programme démarre comme un processus d'arrière-plan, mais le programme se termine brusquement lorsque la fenêtre DOS qui a commencé la session PowerShell est fermé. Je tiens à commencer en arrière-plan, et être indépendant de la fenêtre de commande qui a commencé.

La redirection de sortie a également été source de problèmes, car il semble que la sortie d'erreur et de flux ne peuvent être redirigé dans le processus est en cours d'exécution dans la même fenêtre (par exemple, à l'aide de -NoNewWindow).

Est ce genre de chose possible dans PowerShell?

source d'informationauteur Dave | 2014-07-29