Запустите Powershell из C#
Мне нужно запустить скрипт powershell из C# и получить исключение PSSSecurityExip для pipe.Invoke()
Проверка AuthorizationManager не удалась.
Мой код:
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
{
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
Command scriptCommand = new Command(scriptfile);
pipeline.Commands.Add(scriptCommand);
pipeline.Invoke();
}
Вопросы
- Я подозреваю, что мне нужно установить PSCredential. Но я не могу попросить об этом, поэтому я должен справиться с этим в коде. Можно ли это сделать безопасным способом? (Это был не тот случай)
2 ответа
Проблема заключалась в том, что скрипт был размещен на общем ресурсе. Чтобы запустить сценарии для этого общего ресурса, мне нужно было добавить общий ресурс в надежные сайты.
Проверьте это сообщение SuperUser: https://superuser.com/questions/106360/how-to-enable-execution-of-powershell-scripts
Возможно, вам просто нужно разрешить запуск неподписанных скриптов. В консоли PS введите следующее:
set-executionpolicy remotesigned
Другой ресурс повторяет это: http://tgnp.me/2011/09/powershell-authorizationmanager-check-failed-resolution/
Попробуйте и дайте мне знать, что происходит.
Чтобы захватить вывод из скрипта, попробуйте это:
Collection output = pipeline.Invoke();
foreach (PSObject psObject in output)
{
<here you can ToString the psObject for the output and write it line by line to your log>
}