[英]Run function with Start-process within script
我正在尝试初始化一堆Powershell窗口,以帮助非常快速地完成扫描。 每个窗口需要不同的输入,并且我有一个数组变量给出该输入。 启动过程函数似乎可以正常工作,但是如果我使用"
,它将给我带来未知的函数错误,并且当我使用'
时,绝对没有响应
foreach($search in $Partlist){
start-process powershell.exe -argumentlist '-nologo -noprofile -executionpolicy bypass -command .\Get-Data -search $search -department $PNdept -accuracy $accuracy; pause'
start-sleep -s 5
}
我不明白为什么会收到未知的函数错误,但我相信我没有任何反应,因为变量不是全局变量,我已经声明了全局变量,但仍然没有运气。 也许我想念一些东西。 谢谢。
为了增加Ansgar Wiechars的答案,有以下区别:
一篇很棒的文章在这里: https : //learn-powershell.net/2012/05/13/using-background-runspaces-instead-of-psjobs-for-better-performance/但请注意不要太过分: https: //newsqlblog.com/2012/05/22/concurrency-in-powershell-multi-threading-with-runspaces/
为了回答有关“全局”空间的问题,这对于您所在计算机的桌面会话而言不是全局的。 这对于您正在使用的Powershell进程是全局的。示例:使用以下命令创建一个环境变量:
[System.Environment]::SetEnvironmentVariable("MyVar", 22, "User")
您生成一个新的powershell窗口,并使用以下命令进行检查:
$env:MyVar
您可以这样删除它:
Remove-Item env:\myvar
您生成另一个新的Powershell窗口,并且环境变量仍然存在。 进一步的实验将向您显示,每个新过程都会产生一个新的全局范围。
所以! 为什么会出现“未知功能”? 因为您希望环境的某些方面与调用过程相匹配,但是它并不成立。 在这种情况下:
使用运行空间,或参考以下内容: PowerShell使用启动过程在脚本块中执行功能会引起奇怪,并带有双引号
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.