2015-05-07 4 views
2

Кто-нибудь работал с SDK Citrix 7.6 BrokerSession? Я не могу понять, как выполнить команду, как это, например:Citrix 7.6 Брокер SDK C#/Powershell

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() по той простой причине обработки исключений в более простым способом?

+0

Мне было бы очень приятно, если бы кто-то знал что-нибудь о SDK в 7.6. –

ответ

1

Командлеты Citrix 7.6, полученные не из класса Cmdlet, а из PSCddlet. Таким образом, они гораздо более переплетены с двигателем 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(); 

AFAIK хорошие времена сильно типизированных классов в Citrix SDK ушли.

 Смежные вопросы

  • Нет связанных вопросов^_^