我已经使用以下代码成功获取执行策略:
using (var powerShellInstance = PowerShell.Create())
{
powerShellInstance.AddCommand("Get-ExecutionPolicy");
Collection<PSObject> obj = powerShellInstance.Invoke();
}
我已经使用以下代码来设置执行策略:
using (var powerShellInstance = PowerShell.Create())
{
powerShellInstance.AddCommand("Set-ExecutionPolicy").AddArgument("ByPass");
powerShellInstance.Invoke();
}
问题是当我从PowerShell设置执行策略时,C#中的更改不可见。如果我从C#设置执行策略,则可以看到更改。
考虑以下方案:
- C#获得执行策略
Unrestricted
。 - PowerShell将执行策略设置为
Bypass
。 - C#获得执行策略
Unrestricted
。 - C#将执行策略设置为
Bypass
。 - C#获得执行策略
Bypass
。
范围 !
Set-ExecutionPolicy -Scope CurrentUser
Set-ExecutionPolicy -Scope LocalMachine
Set-ExecutionPolicy -Scope MachinePolicy
Set-ExecutionPolicy -Scope Process
Set-ExecutionPolicy -Scope UserPolicy
i 相信默认范围是 Process
(因此您的问题(