param(
[string]$name,
[string]$template
)
我有一个包含以下参数的powershell脚本。我正在从C#执行这个powershell脚本。我想解析脚本并获取参数。将来脚本可能会更改,参数也会更改。
答案 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