Powershell Get-ExecutionPolicy возвращает разные значения - PullRequest
3 голосов
/ 02 декабря 2010

В зависимости от метода, который я использовал для получения параметра политики выполнения для Powershell, я получаю два разных значения.

Если я запускаю Get-ExecutionPolicy в приглашении Powershell, я получаю «Неограниченно».

Если я использую следующий код, я получаю «Ограничено».

using (var runspace = RunspaceFactory.CreateRunspace())
{
    runspace.Open();

    var pipeline = runspace.CreatePipeline();
    pipeline.Commands.AddScript("Get-ExecutionPolicy");

    foreach (var result in pipeline.Invoke())
    {
        var restriction = ((ExecutionPolicy)result.BaseObject);
        break;
    }
}

Опять я получаю «Restricted» со следующим кодом:

using (var invoker = new RunspaceInvoke())
{
    foreach (var result in invoker.Invoke("Get-ExecutionPolicy"))
    {
        var restriction = ((ExecutionPolicy)result.BaseObject);
        break;
    }
}

Я также проверил в реестре здесь: HKEY_Local_Machine\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.Powershell\ExecutionPolicy и там написано «Неограниченно».

Есть идеи, почему я получаю другой результат? Возможно, мой код неверен?

1 Ответ

5 голосов
/ 02 декабря 2010

Реализуете ли вы собственный хост?Если это так, политика выполнения по умолчанию будет ограничена и ее необходимо будет установить для этого хоста (в разделе ShellIds).

В любом случае, вы должны сначала выполнить эту команду в своем коде, чтобы изменить настройку:

Set-ExecutionPolicy RemoteSigned -Scope process
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...