2017-04-22 69 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()