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