Powershell 在脚本中运行带有启动进程的函数
我正在尝试初始化大量powershell窗口,以帮助快速完成扫描。每个窗口需要不同的输入,我有一个数组变量提供该输入。启动进程函数似乎可以工作,但如果我使用Powershell 在脚本中运行带有启动进程的函数,powershell,Powershell,我正在尝试初始化大量powershell窗口,以帮助快速完成扫描。每个窗口需要不同的输入,我有一个数组变量提供该输入。启动进程函数似乎可以工作,但如果我使用“,它会给我一个未知函数错误,当我使用” foreach($search in $Partlist){ start-process powershell.exe -argumentlist '-nologo -noprofile -executionpolicy bypass -command .\Get-Data -search $
“
,它会给我一个未知函数错误,当我使用”
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的答案,有以下区别:
- 乔布斯会在幕后启动新的流程,但会给你带来很多好处 用于运行多个实例、排队和获取数据的框架 然而,在这种情况下,为每项工作启动一个新流程是昂贵的 窗户
- 启动一个新的Powershell窗口至少会和作业一样慢,但会增加视觉元素的额外开销,并且很难将结果返回到调用过程
- 运行空间可能会执行得更快,因为 它们在同一进程中作为线程运行,这要便宜得多 实例化,因为它们使用现有的进程块(这是一个 Windows结构,而不是PS结构)
[System.Environment]::SetEnvironmentVariable("MyVar", 22, "User")
您将生成一个新的powershell窗口,并使用以下内容进行检查:
$env:MyVar
Remove-Item env:\myvar
您可以使用以下命令将其删除:
$env:MyVar
Remove-Item env:\myvar
您生成了另一个新的powershell窗口,而环境变量仍然存在。进一步的实验将显示,每个新进程都会生成一个新的全局范围
那么!为什么会得到“未知函数”?因为您希望环境的某些方面与调用过程相匹配,但它并不成立。在这种情况下:
- 您的命令不在生成新进程的路径中
- 您的变量值没有赋值,因为您在单引号中传递它们,而新流程的作用域中没有它们
使用运行空间,或参考以下内容:要添加到Ansgar Wiechars的答案中,有以下区别:
- 乔布斯会在幕后启动新的流程,但会给你带来很多好处 用于运行多个实例、排队和获取数据的框架 然而,在这种情况下,为每项工作启动一个新流程是昂贵的 窗户
- 启动一个新的Powershell窗口至少会和作业一样慢,但会增加视觉元素的额外开销,并且很难将结果返回到调用过程
- 运行空间可能会执行得更快,因为 它们在同一进程中作为线程运行,这要便宜得多 实例化,因为它们使用现有的进程块(这是一个 Windows结构,而不是PS结构)
[System.Environment]::SetEnvironmentVariable("MyVar", 22, "User")
您将生成一个新的powershell窗口,并使用以下内容进行检查:
$env:MyVar
Remove-Item env:\myvar
您可以使用以下命令将其删除:
$env:MyVar
Remove-Item env:\myvar
您生成了另一个新的powershell窗口,而环境变量仍然存在。进一步的实验将显示,每个新进程都会生成一个新的全局范围
那么!为什么会得到“未知函数”?因为您希望环境的某些方面与调用过程相匹配,但它并不成立。在这种情况下:
- 您的命令不在生成新进程的路径中
- 您的变量值没有赋值,因为您在单引号中传递它们,而新流程的作用域中没有它们
使用运行空间,或参考以下内容:什么是
获取数据
?脚本或函数?它看起来像脚本的路径,在这种情况下,请尝试使用完整路径,因为除非您将WorkingDirectory参数传递给start-process,否则新进程将不会在当前目录中启动。请不要使用PowerShell使桌面混乱l windows我建议你开始研究。写完整路径的问题是它需要用引号引起来,因为路径名中有空格。它也是一个脚本,但我把它变成了一个函数,因为它需要输入。我现在正在研究作业。什么是获取数据?脚本或函数?它看起来像是脚本的路径,在这种情况下,请尝试使用完整路径,因为除非您将WorkingDirectory参数传递给start-process,否则新进程将不会在当前目录中启动。我建议您开始研究PowerShell windows,而不是让桌面混乱。写入完整路径的问题是它需要加引号,因为路径名中有空格。它也是一个脚本,但我把它变成了一个函数,因为它需要输入。我现在正在寻找作业。什么是获取数据?脚本或函数?它看起来像是脚本的路径,在这种情况下,请尝试使用完整路径,因为新进程不会在当前目录中启动,除非您给出pass In要启动进程的WorkingDirectory参数。与其让桌面上的PowerShell窗口乱七八糟,我建议您开始研究。编写完整路径的问题是,它需要用引号括起来,因为路径名中有空格。它也是一个脚本,但我有点把它变成了一个函数,因为它需要输入。我正在研究现在开始找工作。