我使用以下代码来获取执行策略并成功检索它.
代码块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窗口更改为Bypass并使用代码块1在C#中进行测试,它将ExecutionPolicy检索为Unrestricted.
使用C#代码块2将ExecutionPolicy更改为Bypass并使用代码块1在C#中进行测试,它将ExecutionPolicy检索为Bypass.
最佳答案 范围!
Set-ExecutionPolicy -Scope CurrentUser
Set-ExecutionPolicy -Scope LocalMachine
Set-ExecutionPolicy -Scope MachinePolicy
Set-ExecutionPolicy -Scope Process
Set-ExecutionPolicy -Scope UserPolicy
我相信默认范围是Process(因此你的问题)