我正在考虑编写一些 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”并回车时,我看到了:
Param([string]$P) Write-Host "$P"
我想看到的是这个(如果参数值为“Foo”):
Param([string]$P) Write-Host "Foo"
我意识到这可以在调用它时完成,无论是通过“&”还是使用 Invoke(),但是有没有办法让参数在不调用的情况下解析,从而使我的脚本生成更加优雅而不需要一堆条件整个代码中的语句?