Te sugerimos que pruebes esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Usa trabajos para esto:
Start-Job -ScriptBlock
& java -jar MyProgram.jar >console.out 2>console.err
Otra opción sería Start-Process
:
Start-Process java -ArgumentList '-jar', 'MyProgram.jar' `
-RedirectStandardOutput '.console.out' -RedirectStandardError '.console.err'
Considere usar el programador de tareas para esto. Defina una tarea y configúrela sin desencadenantes. Eso le permitirá simplemente “Ejecutar” (activar manualmente) la tarea.
Puede configurar y/o desencadenar tareas programadas mediante el módulo PowerShell de ScheduledTasks, o puede utilizar la GUI.
Esta es una publicación anterior, pero como la tengo funcionando bien, pensé que podría ser útil compartirla. Es probable que su problema sea la llamada a ‘java’ en lugar de ‘javaw’. Lo ejecuté yo mismo usando mi programa Java JEdit a través de PowerShell para iniciarlo.
#Requires -Version 3.0
$MyDriveRoot = (Get-Location).Drive.Root
$JEditDir = $($mydriveroot + "jEdit") ;# Should be C:jEdit or wherever you want. JEdit is a sub-directory.
$jEdit = $($JEditDir + "jedit.jar" )
$jEditSettings = $($JEditDir + "settings")
$JEditLogs = $($JEditDir + "logs")
Start-Process -FilePath javaw -ArgumentList ( '-jar',"$jEdit", '-settings="$JEditSettings"' ) -RedirectStandardOutput "$JEditLogsconsole.out" -RedirectStandardError "$JEditLogsconsole.err"
Que puede convertir en una pequeña función y luego en un alias para facilitar el lanzamiento en Powershell.
If ( ( Test-Path $jedit) )
Function Start-JEdit()
Start-Process -FilePath javaw -ArgumentList ( '-jar',"$jEdit", '-settings="$($mydriveroot + "jEditsettings")"' ) -RedirectStandardOutput "$JEditLogsconsole.out" -RedirectStandardError "$JEditLogsconsole.err"
New-Alias -Name jedit -Force Start-JEdit -Description "Start JEdit programmers text editor"