2017-04-22 68 views
-1

我想提取PowerShell腳本的參數塊。 我已閱讀AST解析器可能的,但我找不到有用的片段。從腳本中提取參數塊

我有這裏這裏字符串,我只想提取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

[相關](http://stackoverflow.com/a/41029306/1630171)。 –

回答

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()