У меня есть приложение, которое я использую для запуска команд Exchange Powershell внутри кода C #, как показано ниже. Это пример соответствующих строк, которые я использую для запуска команды powershell.
RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
PSSnapInException snapInException = null;
//load Exchange shell
rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", out snapInException);
Runspace runSpace = RunspaceFactory.CreateRunspace(rsConfig);
//open runspace
runSpace.Open();
//setup pipeline
Pipeline pipeLine = runSpace.CreatePipeline();
String sScript = "get-mailbox -identity 'rj'";
//add script to pipeline
pipeLine.Commands.AddScript(sScript);
//run the script
pipeLine.Invoke();
pipeLine.Dispose();
Этот код прекрасно работает во всех случаях до сих пор. сценарий, который я пытаюсь запустить вместо приведенного выше, заключается в установке RetentionPolicy для почтового ящика. Скрипт, который я пытаюсь запустить, выглядит следующим образом:
Set-Mailbox -Identity 'rj' -RetentionPolicy 'Основная политика хранения кампуса'
Когда я запускаю это в самом PowerShell, оно работает отлично, но когда я пытаюсь запустить его, используя приведенный ниже код, я получаю сообщение об ошибке: «Не удается вызвать эту функцию, поскольку текущий хост не реализует ее».
Из этой ошибки кажется, что команда, выполняемая в C #, не может запустить команду RetentionPolicy, но это не имеет особого смысла. Я гуглил это и попробовал все предложенное, но не повезло.
Если кто-нибудь знает, почему это происходит, это было бы очень полезно.