2

Citrix 7.6 BrokerSession SDK を使用したことのある人はいますか? たとえば、次のようなコマンドを実行する方法がわかりません。

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

これにより、「PSCmdlet から派生したコマンドレットを直接呼び出すことはできません。

以前の 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 クラスと Powershell.Create() を使用してコマンドを実行することは避けたいと思います。

4

1 に答える 1

1

Cmdlet クラスではなく PSCmdlet から派生した Citrix 7.6 コマンドレット。そのため、これらは 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 の強く型付けされたクラスの良い時代は過ぎ去りました。

于 2015-10-06T14:56:39.627 に答える