我想提取PowerShell脚本的param块。 我已经阅读了AST解析器可以实现但我找不到一个有用的片段。
我有这个Here-String,我只想将param块提取为字符串。
$scriptBlock = @'
Param (
[Parameter(Mandatory=$true)][string]$param1,
[Parameter(Mandatory=$true)][string]$param2,
[Parameter(Mandatory=$true)][switch]$param3
)
Write-Output ('param1: {0}' -f $param1)
Write-Output ('param2: {0}' -f $param2)
Write-Output ('param3: {0}' -f $param3)
'@
答案 0 :(得分:1)
感谢Ansgar Wiechers的灵感。
我找到了解决这个问题的方法。这是可行的解决方案:
$scriptBlock = @'
Param (
[Parameter(Mandatory=$true)][string]$param1,
[Parameter(Mandatory=$true)][string]$param2,
[Parameter(Mandatory=$true)][switch]$param3
)
Write-Output ('param1: {0}' -f $param1)
Write-Output ('param2: {0}' -f $param2)
Write-Output ('param3: {0}' -f $param3)
'@
[ref]$tokens = $null
[ref]$parseErrors = $null
$paramBlock = ([Management.Automation.Language.Parser]::ParseInput($scriptBlock, $parseErrors,$tokens)).ParamBlock.toString()