Запустите 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();
}

Вопросы

  1. Я подозреваю, что мне нужно установить 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>
}
Другие вопросы по тегам