使用powershell脚本中的参数在后台启动.exe

时间:2013-04-02 15:09:44

标签: powershell jobs job-scheduling

我有一个程序,我通常在powershell中这样开始:

.\storage\bin\storage.exe -f storage\conf\storage.conf

在后台调用它的正确语法是什么?我尝试了很多组合,如:

start-job -scriptblock{".\storage\bin\storage.exe -f storage\conf\storage.conf"}
start-job -scriptblock{.\storage\bin\storage.exe} -argumentlist "-f", "storage\conf\storage.conf"

但没有成功。它也应该在PowerShell脚本中运行。

1 个答案:

答案 0 :(得分:7)

该作业将是PowerShell.exe的另一个实例,并且它不会以相同的路径启动,因此.将无效。它需要知道storage.exe的位置。

此外,您必须使用scriptblock中参数列表中的参数。您可以使用内置的args数组或执行命名参数。 args方式需要最少量的代码。

$block = {& "C:\full\path\to\storage\bin\storage.exe" $args}
start-job -scriptblock $block -argumentlist "-f", "C:\full\path\to\storage\conf\storage.conf"

命名参数有助于了解应该是什么参数。以下是使用它们的方式:

$block = {
    param ([string[]] $ProgramArgs)
    & "C:\full\path\to\storage\bin\storage.exe" $ProgramArgs
}
start-job -scriptblock $block -argumentlist "-f", "C:\full\path\to\storage\conf\storage.conf"