1

如何在 C# 中将 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,而不是评估它。

4

1 回答 1

0

似乎没有办法评估参数值。据我所知,您需要使用AddScript而不是AddCommand. 如果您想拥有参数,还需要根据您在命令行上编写的内容来更改表达式。

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

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

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

于 2017-03-30T13:48:47.800 回答