Powershell Get-ExecutionPolicy返回不同的值

时间:2010-12-02 19:41:20

标签: c# powershell

取决于我用于获取Powershell执行策略设置的方法,我得到两个不同的值。

如果我在Powershell提示符下运行Get-ExecutionPolicy,我会获得'Unrestricted'。

如果我使用以下代码,我会受到“限制”。

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;
    }
}

同样,我使用以下代码获得“限制”:

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 个答案:

答案 0 :(得分:5)

您是否正在实施自定义主机?如果是,则默认执行策略将受到限制,并且需要为该主机设置(在ShellIds下)。

无论哪种方式,您都应该首先在代码中执行此命令以覆盖设置:

Set-ExecutionPolicy RemoteSigned -Scope process