在PowerShell 4脚本中控制后台作业

时间:2017-04-17 20:30:38

标签: powershell sas background-process

我有一系列SAS程序,我使用从任务计划程序启动的PowerShell脚本在后台运行。

我希望每个程序在启动另一个程序之前先完成。

我使用我在本网站上找到的示例尝试了许多不同的方法,但似乎都没有用。我特别无法找到的是在后台运行的作业的状态,然后在条件语句中使用该状态来检查在后台运行的第一个程序是否在启动第二个程序之前完成。

例如,如果我使用:

$job01 = Start-Job -ScriptBlock { & "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -sysin "D:\EDM\SASPROGRAMS\ABC.sas" -nosplash -log D:\EDM\SASLOGS -work D:\SASWork }

然后

Get-Job

我会看到$job01在发出Get-Job后立即完成,此时SAS程序本身需要大约10分钟才能完成。

我可以使用哪个cmdlet来确定后台运行的SAS程序何时完成?

1 个答案:

答案 0 :(得分:5)

呼叫操作员&触发并忘记。使用Start-Process开关尝试-Wait。尝试:

Start-Process -FilePath "C:\Program Files\SASHome\SASFoundation\9.4\sas.exe" -ArgumentList "-sysin `"D:\EDM\SASPROGRAMS\ABC.sas`" -nosplash -log D:\EDM\SASLOGS -work D:\SASWork" -NoNewWindow

请记住在arguments-string中使用双引号(使用反引号)。