所以我想从C#执行PowerShell计算属性(我希望这是正确的名称)。使用C#中的PowerShell计算属性
我在PS(交易所)控制台小命令是这样的:
Get-Something -ResultSize unlimited |Select-Object DisplayName,@{name="RenamedColumn;expression={$_.Name}},ToBeExpanded -Expand ToBeExpanded |Select-Object DisplayNameRenamedColumn,ToBeExpandedGuid
这一切正常,当我尝试从C#执行它的问题occures。
我的代码看起来是这样的:
List<string> parameters = new List<string>()
{
"DisplayName","@{{name=\"RenamedColumn\";expression={{$_.Name }} }}","ToBeExpanded"
};
List<string> parameters2 = new List<string>()
{
"DisplayName","RenamedColumn","ToBeExpanded","ToBeExpandedGuid"
};
powershell.AddCommand("Get-Something");
powershell.AddParameter("ResultSize","unlimited");
powershell.AddCommand("Select-Object");
powershell.AddParameter("Property",parameters);
powershell.AddParameter("ExpandProperty","ToBeExpanded");
powershell.AddCommand("Select-Object");
powershell.AddParameters("Property",parameters2);
result = powershell.Invoke();
我的结果,那么包含空ToBeExpandedGuid
(空)。于是,我就命令没有第二个选择,它让我发现,它具有柱:
@{{name=\"RenamedColumn\";expression={{$_.Name }} }}
所以我的想法是,PowerShell不承认这个重命名......现在我的问题我怎么使用类似这来自C#?有没有解决方法?
这就是我一直在寻找的谢谢!它解决了这个问题:) –
所以我有另一个类似的问题。在这种情况下,我需要一个脚本块:'@ {name = someName; expression = {$ _。SomeColumn.Child -join','}}'但这不适用于ScriptBlock ...我的C#代码看起来像如下: 'new Hashtable(){ {“Name”,“someName”}, {“Expression”,ScriptBlock.Create(“$ _。SomeColumn.Child -join','”)} }' –
@RaphaelFischer我没有看到你的C#代码有问题。究竟是什么问题?例外,意外的结果还是别的?你能否提供代码来重现问题([MCVE](http://stackoverflow.com/help/mcve))? – PetSerAl