Я пытаюсь запустить PowerShell script из приложения С#, и мне нужен script для запуска, когда мое приложение С# работает как пользователь, не являющийся администратором (например, сетевая служба или другая учетная запись домена).
Раньше я использовал следующий код:
using (RunspaceInvoke invoker = new RunspaceInvoke())
{
// load the powershell module
invoker.Invoke("Import-Module MyModule");
// run the cmdlet defined in the module
invoker.Invoke("MyCmdlet");
}
Я не знаю, лучший ли это подход для выполнения командлетов, определенных в модуле (пожалуйста, научите меня, если есть лучший способ!). В любом случае это работает отлично, если я работаю как административный пользователь. Однако я попытался запустить это как сетевую службу, и у меня возникла недружественная ошибка в конструкторе RunspaceInvoke:
Запрошенный доступ к реестру не разрешен.
Есть ли способ, которым я могу запускать мои командлеты PowerShell в качестве не-повышенного пользователя, такого как Network Service? Мне не нужен или не нужен доступ к реестру. Сам командлет также не требует повышенных привилегий.