当我在使用 Entity Framework 的项目中的 Visual Studio 2017 v15.9.6 中加载包管理器控制台时,我收到以下错误:
\packages\EntityFramework.6.2.0\tools\init.ps1 无法加载,因为它的操作被软件限制策略阻止,例如使用组策略创建的限制策略。在 line:1 char:45 + ... rgs+=$_}; & 'C:\Bitbucket\project-path\packages\EntityFramework.6.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
这使我无法运行特定于实体框架的命令,例如“Update-Database”或“Add-Migration”。
以下是我尝试过的事情:
- 重新安装 Visual Studio
在组策略编辑器中,对于计算机配置和用户配置,我已启用位于“管理模板\Windows 组件\Windows PowerShell”中的“打开脚本执行”设置。两种配置的设置都将“执行策略”设置为“允许所有脚本”。
我已经在包管理器控制台中本地尝试将“进程”范围设置为“绕过”和“无限制”,然后手动加载实体框架 init.ps1 脚本。我收到同样的错误。
- 我还尝试修改 PowerShell 的注册表项,在一些地方将 ExecutionPolicy 设置为“无限制”。这些地方位于:
- HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
- HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps120
- HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps140
- 在执行上述所有操作之间,我已经多次重新启动。
当我运行命令“Get-ExecutionPolicy -List”时,这是我的结果“
Scope ExecutionPolicy
----- -----------------------
MachinePolicy Undefined
UserPolicy Unrestricted
Process Undefined
CurrentUser Unrestricted
LocalMachine Unrestricted
完成上述所有操作后,我希望能够正常加载 Visual Studio,启动包管理器控制台,并且在尝试运行实体框架 init.ps1 脚本时不会收到任何错误。我一定是错过了什么或做错了什么。我需要做什么才能让 Visual Studio 按预期工作?
更多信息是这是一台加入公司域的计算机,但没有其他开发人员遇到此问题。管理员没有设置组策略来阻止我运行脚本。