Citrix 7.6 代理 SDK C#/Powershell

Citrix 7.6 Broker SDK C#/Powershell

有人使用过 Citrix 7.6 BrokerSession SDK 吗?我不知道如何执行这样的命令,例如:

GetBrokerSessionCommand getCmd = new GetBrokerSessionCommand();
getCmd.AdminAddress = "citrixServer:80";
var result = getCmd.Invoke();

这给我一条错误消息:“无法直接调用从 PSCmdlet 派生的 Cmdlet。

在早期的 6.5 SDK 中我可以这样做:

string[] servers = new string[] { };
GetXAWorkerGroupByName workerGroup = new GetXAWorkerGroupByName();
workerGroup.WorkerGroupName = new string[] { workerGroupName };
workerGroup.ComputerName = XenAppController;
foreach (XAWorkerGroup _workerGroup in CitrixRunspaceFactory.DefaultRunspace.ExecuteCommand(workerGroup))
                {
                    servers = _workerGroup.ServerNames;
                }

            return servers;

但是现在 CitrixRunspaceFactory 不存在了? 出于以更简单的方式处理异常的简单原因,我想避免使用 Powershell class 和 Powershell.Create() 执行命令。

Citrix 7.6 cmdlet 不是来自 Cmdlet class,而是来自 PSCmdlet。因此它们与 PowerShell 引擎绑定得更多,必须在其中调用:

    Runspace runSpace = RunspaceFactory.CreateRunspace();
    runSpace.Open();
    PSSnapInException psex;
    runSpace.RunspaceConfiguration.AddPSSnapIn("Citrix.Broker.Admin.V2", out psex);
    Pipeline pipeline = runSpace.CreatePipeline();

    Command getSession = new Command("Get-BrokerSession");
    getSession.Parameters.Add("AdminAddress", "SERVERNAME");
    pipeline.Commands.Add(getSession);

    Collection<PSObject> output = pipeline.Invoke();

据我所知,Citrix SDK 中强类型 classes 的美好时光已经一去不复返了。