Powershell获取内容+调用表达式单独执行语句还是一次执行所有语句?

时间:2016-10-03 13:30:28

标签: .net windows powershell

考虑这个陈述:

Get-Content .\zipper.ps1 | Invoke-Expression

这是Technet中记录的变体。

Invoke-Expression (Get-Content '.\zipper.ps1' -Raw)

两个语句都运行得很好,尽管第二个语句的执行速度要快得多。 假设zipper.ps1是一个包含多行可执行Powershell代码的脚本。

上述语句是否会将zipper.ps1中的每一行作为单独的命令执行?

或者,整个脚本是否会作为一个大的连接字符串执行?

我的问题与powershell语句的字符限制有关 - 如果每个代码行都在powershell字符限制范围内,但整个脚本超出字符限制,上述命令是否会超出字符限制?

PowerShell可能有260个字符的限制(不确定)。这些页面提到了Powershell中的字符限制:

https://support.microsoft.com/en-us/kb/830473

https://social.technet.microsoft.com/Forums/windowsserver/en-US/f895d766-5ffb-483f-97bc-19ac446da9f8/powershell-command-size-limit?forum=winserverpowershell

详细信息:

Technet声明:

" Get-Content cmdlet获取路径指定位置处项目的内容,例如文件中的文本。"

" Invoke-Expression cmdlet将指定的字符串作为命令进行计算或运行,并返回表达式或命令的结果。"

到目前为止一直很好 - 这清楚地解释了我的陈述如何以及为什么起作用。但它并没有告诉我这些语句是作为单独的语句执行,还是作为一个大的连接字符串执行。第二种变化运行得更快的事实可能是一个线索。

也许我需要添加For..Each

technet doc说Get-Content返回一个集合,而this Technet article表示它返回一个数组。这个相互矛盾的信息,但不确定数组与收集问题在这里是我的问题。

THX

0 个答案:

没有答案