快速故事:为了尝试使用 powershell,我正在尝试学习如何有效地对脚本进行多线程处理。
现在我知道如何开始工作并将变量传递给我的第二个脚本,但是我决定尝试找出如何解决这个问题:
start-job ((Split-Path -parent $PSCommandPath) + "\someScript.ps1") -ArgumentList (,$argList)
进入这个:
start-job (. ((Split-Path -parent $PSCommandPath) + "\someScript.ps1")) -ArgumentList (,$argList)
原因是我在父脚本中声明了一个变量,如下所示:
New-Variable var -value 0 -Option AllScope
并在子脚本中:var = "something"
第一个启动作业传递了我的参数,但子进程没有设置全局“var”变量
第二个没有传递我的参数,但子脚本设置了在父级中定义的全局变量就好了。$argList 变量将在第二个启动作业中填充到这行代码,但在执行该行之后,调试显示 $argList 变量为空,我得到“Start-Job:无法将参数绑定到参数” ScriptBlock',因为它是空的。”
为了论证起见,假设直到指定的代码行,变量都包含它们应该包含的数据。
有人可以帮我解决这两种尝试的问题吗?谷歌未能就我的问题给我任何具体的答案。提前感谢我能得到的任何帮助。
编辑: usingStart-Job (. ((Split-Path -parent $PSCommandPath) + "\someScript.ps1") $argList)
实现了我的目标,但是Start-Job : Cannot bind argument to parameter 'ScriptBlock' because it is null.
即使参数在脚本块中并且子脚本正在获取和处理参数,我也会继续得到。