如何从C#获取ExecutionPolicy?

如何从C#获取ExecutionPolicy?,c#,powershell,C#,Powershell,我使用了以下代码来获取执行策略并成功地检索了它 代码块1: using (var powerShellInstance = PowerShell.Create()) { powerShellInstance.AddCommand("Get-ExecutionPolicy"); Collection<PSObject> obj = powerShellInstance.Invoke(); } 例如,考虑以下场景: 使用代码块1在C#中检索执行策略为无限制的。

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

代码块1:

using (var powerShellInstance = PowerShell.Create())
{
     powerShellInstance.AddCommand("Get-ExecutionPolicy");
     Collection<PSObject> obj = powerShellInstance.Invoke();
}  
例如,考虑以下场景:

使用代码块1在C#中检索执行策略为无限制的
将PowerShell窗口中的ExecutionPolicy更改为旁路,并在C中测试;使用代码块1,它将ExecutionPolicy检索为无限制
使用C代码块2将ExecutionPolicy更改为旁路,并使用代码块1在C中测试,它将ExecutionPolicy检索为旁路

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

我相信默认范围是
进程
(因此您的问题)

设置存储在注册表中的HKLM | HKCU\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell下这应该是正确的。然而,
Set ExecutionPolicy
的帮助说明默认值是不同的(
LocalMachine
),但我真的怀疑这一点-在默认情况下将Set ExecutionPolicy与machine一起抛出的风险足够高。也可能是由于未能设置本地计算机策略,cmdlet将作用域更改为process。很好,我已将作用域更改为CurrentUser,然后进行了测试,工作正常。
Set-ExecutionPolicy -Scope CurrentUser
Set-ExecutionPolicy -Scope LocalMachine
Set-ExecutionPolicy -Scope MachinePolicy
Set-ExecutionPolicy -Scope Process
Set-ExecutionPolicy -Scope UserPolicy