如何在.NET中将cmdlet作为参数值传递

时间:2017-03-29 21:45:21

标签: c# .net powershell system.management

如何在cm#中将cmdlet作为参数值传递?换句话说,.NET的等效内容是什么?

PS> Get-Content -Path (Some-Cmdlet)

我有以下代码:

var ps = PowerShell.Create(session);
ps.AddComand("Get-Content").AddParameter("Path", "(Some-Cmdlet)");

然而,字符串"(Some-Cmdlet)"逐字通过。它没有被解释。我也尝试过:

var ps = PowerShell.Create(session);
var cmd = new Command("Some-Cmdlet");
ps.AddComand("Get-Content").AddParameter("Path", cmd);

不幸的是,它给出了相同的结果。它似乎是在ToString()对象上调用Command,而不是对其进行评估。

1 个答案:

答案 0 :(得分:0)

似乎无法评估参数值。根据我的发现,您需要使用AddScript而不是AddCommand。如果你想要参数,还需要改变你在命令行上写的表达式。

就我而言,我使用了表格:

var flag = "xyz";
ps.AddScript(@"param([string]$Flag) Get-Content -Path (Some-Cmdlet -Flag $Flag)")
    .AddParameter("Flag", flag);

可能有更好的方法,但这有效。