从脚本中提取参数块
Extracting the param block from script
我想提取 PowerShell 脚本的参数块。
我读过 AST 解析器可以做到这一点,但我找不到有用的片段。
我有这个 Here-String,我只想将参数块提取为字符串。
$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)
'@
感谢 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()
我想提取 PowerShell 脚本的参数块。 我读过 AST 解析器可以做到这一点,但我找不到有用的片段。
我有这个 Here-String,我只想将参数块提取为字符串。
$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)
'@
感谢 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()