2010-12-02 4 views
3

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

Если я запускаю Get-ExecutionPolicy в подсказке Powershell, я получаю «Unrestricted».

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

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 и там говорит Неограниченные.

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

ответ

5

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

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

Set-ExecutionPolicy RemoteSigned -Scope process 
+0

Спасибо. В конечном счете, этот код будет работать в службе Windows. На данный момент я тестирую его в приложении Windows. Какие права мне нужно, чтобы переопределить настройку? – joerage 2010-12-02 21:16:50

Смежные вопросы