Dav*_*ave 14 windows powershell
我有一个Java程序,我想从PowerShell脚本作为后台进程启动,类似于守护程序在Linux上运行的方式.PowerShell脚本需要执行以下操作:
我在Linux上有一个shell脚本,它启动程序如下:
$ java -jar MyProgram.jar >console.out 2>console.err &
Run Code Online (Sandbox Code Playgroud)
我希望使用PowerShell脚本在Windows上复制相同的行为.我尝试过使用Start-Process
各种选项组合,以及创建System.Diagnostics.ProcessStartInfo
和System.Diagnostics.Process
对象,但到目前为止我没有运气.PowerShell作为后台进程启动程序,但是当启动PowerShell会话的DOS窗口关闭时,程序突然终止.我希望它在后台启动并独立于启动它的命令窗口.
输出重定向也很麻烦,因为输出和错误流似乎只能在同一窗口中运行的过程中重定向(例如,使用-NoNewWindow
).
PowerShell中有可能出现这种情况吗?
Ans*_*ers 18
使用作业:
Start-Job -ScriptBlock {
& java -jar MyProgram.jar >console.out 2>console.err
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是Start-Process
:
Start-Process java -ArgumentList '-jar', 'MyProgram.jar' `
-RedirectStandardOutput '.\console.out' -RedirectStandardError '.\console.err'
Run Code Online (Sandbox Code Playgroud)
小智 5
考虑为此使用任务调度程序。定义一个任务并在没有任何触发器的情况下设置它。这将允许您简单地“运行”(手动触发)任务。
您可以使用 ScheduledTasks powershell 模块设置和/或触发计划任务,也可以使用 GUI。
这是一篇旧文章,但由于我运行良好,因此认为它可能有助于分享。调用“java”而不是“javaw”可能是您的问题。我自己使用 JEdit java 程序通过 powershell 运行它来启动它。
#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 "$JEditLogs\console.out" -RedirectStandardError "$JEditLogs\console.err"
Run Code Online (Sandbox Code Playgroud)
您可以将其转换为一个小函数,然后是一个别名,以便在 Powershell 中轻松启动。
If ( ( Test-Path $jedit) ) {
Function Start-JEdit() {
Start-Process -FilePath javaw -ArgumentList ( '-jar',"$jEdit", '-settings="$($mydriveroot + "jEdit\settings")"' ) -RedirectStandardOutput "$JEditLogs\console.out" -RedirectStandardError "$JEditLogs\console.err"
}
New-Alias -Name jedit -Force Start-JEdit -Description "Start JEdit programmers text editor"
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26080 次 |
最近记录: |