我已经使用下面的代码成功获取了执行策略:
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 将执行策略设置为
绕过
。 - C# 获取执行策略
Unrestricted
。 - C# 将执行策略设置为
Bypass
。 - C# 获取执行策略
绕过
。
最佳答案
范围!
Set-ExecutionPolicy -Scope CurrentUser
Set-ExecutionPolicy -Scope LocalMachine
Set-ExecutionPolicy -Scope MachinePolicy
Set-ExecutionPolicy -Scope Process
Set-ExecutionPolicy -Scope UserPolicy
我相信默认范围是Process
(因此是您的问题)
关于c# - 为什么从 C# 中看不到从 PowerShell 设置的新执行策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44321591/