如何在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
,而不是对其进行评估。
答案 0 :(得分:0)
似乎无法评估参数值。根据我的发现,您需要使用AddScript
而不是AddCommand
。如果你想要参数,还需要改变你在命令行上写的表达式。
就我而言,我使用了表格:
var flag = "xyz";
ps.AddScript(@"param([string]$Flag) Get-Content -Path (Some-Cmdlet -Flag $Flag)")
.AddParameter("Flag", flag);
可能有更好的方法,但这有效。