gpt4 book ai didi

powershell - 是否可以不调用而解析PowerShell脚本 block 参数?

转载 作者:行者123 更新时间:2023-12-03 00:26:51 31 4
gpt4 key购买 nike

我正在看写一些PowerShell代码,这些代码可以立即执行,也可以生成将作为生成脚本执行的命令。

我想避免这种情况:

if($Generating){
write-Output "somecommand.exe"
}
else{
somecommand.exe
}

我看到了ScriptBlocks,起初看起来很有希望,因为我可以将ScriptBlock的内容写入控制台,而无需执行它。如:
$sc = { somecommand.exe }
$sc
somecommand.exe

我的具体问题是,如果我的脚本块包含参数,当我将脚本块内容写入控制台时是否可以解析它们,而无需调用脚本块?

例如,给出以下脚本块:
$b2 = { Param([string]$P) Write-Host "$P" }

当我只在控制台上键入“$ b2”并按Enter时,我将看到以下内容:
Param([string]$P) Write-Host "$P"

我想看的是这个(如果参数值为“Foo”):
Param([string]$P) Write-Host "Foo"

我意识到可以通过“&”或使用Invoke()调用它来完成此操作,但是可以通过任何方式获取要解析的参数,而无需调用使我的脚本生成更加优雅,而无需一堆条件语句整个代码中的语句?

最佳答案

在PowerShell v3中,您可以通过AST属性获取参数信息,例如:

PS> $sb = {param($a,$b) "a is $a b is $b"}
PS> $sb.Ast.ParamBlock

Attributes Parameters Extent Parent
---------- ---------- ------ ------
{} {$a, $b} param($a,$b) {param($a,$b) "a...

关于powershell - 是否可以不调用而解析PowerShell脚本 block 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505198/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com