Powershell в C# и разрешения

Я запускаю сценарии PowerShell из службы Windows, работающей под учетной записью SYSTEM. Чтобы увеличить права, я разрешаю пользователям выбрать пользователя, которого я позже выдумаю на весь поток, используя метод LogonUser.

Это работает так, что я могу получить доступ к сетевым дискам, и когда я пытаюсь распечатать текущего пользователя в PowerShell, это тоже работает.

Но у меня есть случай, когда он не работает:

Одним из примеров является пользователь, пытающийся загрузить оснастку Exchange и запустить командлет: Get-MailboxPermission

Затем он получает сообщение об ошибке: термин "Get-MailboxPermission" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку. Термин "Get-MailboxPermission" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.

Я предполагаю, что это проблема с разрешениями, и мне интересно, есть ли что-то еще, что нужно изменить на RunSpace и т. Д., Чтобы получить увеличенные разрешения? Есть другие идеи?

1 ответ

Какая версия PowerShell?

Похоже, вы не добавили обменный оснастку. Попробуйте выполнить эту команду раньше:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

или, используя код, в инициализации пространства выполнения, используйте этот код:

RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
PSSnapInException snapInException = null;
PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig);
myRunSpace.Open(rsConfig);

Прочтите эту статью для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/exchange/bb332449(v=exchg.80).aspx

Другие вопросы по тегам