如何从C#获取ExecutionPolicy?

时间:2017-06-02 05:42:54

标签: c# powershell

我使用以下代码来获取执行策略并成功检索它。

代码块1:

using (var powerShellInstance = PowerShell.Create())
{
     powerShellInstance.AddCommand("Get-ExecutionPolicy");
     Collection<PSObject> obj = powerShellInstance.Invoke();
}  

问题是当我从PowerShell更改ExecutionPolicy时,它没有反映在C#中。

但是,如果我从C#更改ExecutionPolicy,那么它就会被反映出来。我使用以下代码更改ExecutionPolicy。

代码块2:

using (var powerShellInstance = PowerShell.Create())
{
     powerShellInstance.AddCommand("Set-ExecutionPolicy").AddArgument("ByPass");
     powerShellInstance.Invoke();
}

例如,请考虑以下情况:

使用代码块1在C#中检索到ExecutionPolicy为 Unrestricted
将ExecutionPolicy从PowerShell窗口更改为绕过,并使用代码块1在C#中进行测试,它将ExecutionPolicy检索为 Unrestricted
使用C#代码块2将ExecutionPolicy更改为绕过,并使用代码块1在C#中进行测试,它将ExecutionPolicy检索为绕过

1 个答案:

答案 0 :(得分:1)

<强> 范围

Set-ExecutionPolicy -Scope CurrentUser
Set-ExecutionPolicy -Scope LocalMachine
Set-ExecutionPolicy -Scope MachinePolicy
Set-ExecutionPolicy -Scope Process
Set-ExecutionPolicy -Scope UserPolicy

相信默认范围是Process(因此您的问题)