解析Powershell脚本的参数。如何从C#中做到这一点?

时间:2014-02-13 11:38:32

标签: c# powershell

param(
    [string]$name,
    [string]$template
)

我有一个包含以下参数的powershell脚本。我正在从C#执行这个powershell脚本。我想解析脚本并获取参数。将来脚本可能会更改,参数也会更改。

2 个答案:

答案 0 :(得分:1)

var str = @"param([string]$name,[string]$template)";
var matches = Regex.Matches(str, "\\[(?<type>\\w+)\\]\\$(?<name>\\w+)").OfType<Match>()
                   .Select(m => new 
                                {
                                   name = m.Groups["name"].Value, 
                                   type = m.Groups["type"].Value
                                });
foreach (var m in matches)
{
    // check m.name and m.type
}

答案 1 :(得分:1)

我将使用PowerShell Parser类。为方便起见,以下示例在PowerShell中,但可以在C#中轻松完成:

PS> $str = 'param([string]$name,[string]$template)'
PS> $ast = [System.Management.Automation.Language.Parser]::ParseInput($str, [ref]$null, [ref]$null)
PS> $ast.ParamBlock.Parameters.Name.Extent.Text
$name
$template