所以我想從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