2
我是PowerShell的新手,並在C#中運行PowerShell cmd-lets。具體而言,我試圖使用Citrix的XenDesktop SDK編寫Web應用程序來管理我們的XenDesktop環境。在C#代碼中運行PSCmdLets(Citrix XenDesktop)
就像一個快速測試,我參考了Citrix BrokerSnapIn.dll,它看起來好像給了我很好的C#類。但是,當我使用此錯誤消息打開.Invoke時: 「無法直接調用從PSCmdlet派生的Cmdlet」。
我搜索並嘗試了一堆東西,但不知道如何調用PSCmdlets。我有點遺憾,我不得不使用字符串和運行空間/管道等來執行此操作。
在先進的感謝, NB
using System;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using Citrix.Broker.Admin.SDK;
namespace CitrixPowerShellSpike
{
class Program
{
static void Main(string[] args)
{
var c = new GetBrokerCatalogCommand {AdminAddress = "xendesktop.domain.com"};
var results = c.Invoke();
Console.WriteLine("all done");
Console.ReadLine();
}
}
}
嗨基思,謝謝你的回答。我看到那篇文章(說實話,它試圖避免像「Get-Process」這樣的「魔術字符串」)在Citrix SDK中,對象瀏覽器顯示了一個像上面那樣的GetBrowserCatalogCommand,這樣我就可以利用強類型看起來我正在走你的路線 – NBPC77
是的,從SMACmdlet派生的一個cmdlet和派生自SMAPSCmdlet的一個cmdlet之間的主要區別在於前者可以隔離使用,即不加載PowerShell引擎和後者不能。 –