PowerShell:使用“start-process”调用并行抛出错误

时间:2016-06-09 20:25:42

标签: shell powershell parallel-processing server

我正在使用可以found at the link here的Invoke-Parallel CmdLet。当我的脚本块中有一些虚拟代码时,它可以正常工作,但是当我添加一个start-process ...命令时,它会失败并显示错误

Get-RunspaceData : This command cannot be run due to the error: The system    
cannot find the file specified.
At c:\crm\Interfaces\Batches\Invoke-Parallel.ps1:592 char:13

我的脚本块看起来像这样。简而言之,我正在将文件名输入一个块,我告诉第三方应用程序将该文件用作进程的输入。当删除启动过程行时,它会起作用,失败。

$childFiles| Invoke-Parallel -ImportVariables {
    $importformat = '-f ' + '"CU Imp P19 FI"'
    $importfile = '-d ' + $_ + " " + $user + " " + $pass        
    Write-Host $importformat + " " + $_
    start-process .\mmim.exe -ArgumentList  $user, $pass, '-l:1', 
    $importformat, $importfile -Wait -NoNewWindow
    return "blah"
}

有没有人知道可能会发生什么?我的PowerShell版本如下

主要:5

次要:0

构建:10586

修订版:117

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

每个PowerShell运行空间都有自己的当前位置。如果Invoke-Parallel未更改生成的运行空间的当前位置以匹配主运行空间的当前位置,则相对路径.\mmim.exe可以解析为整个不同的可执行文件或根本不解析并产生给定的错误。