启动PowerShell主机(powershell.exe,PowerShellISE,NuGet包管理器控制台等)时收到以下错误消息。
文件C:\ Users \ MyUserName \ Documents \ WindowsPowerShell \ profile.ps1 无法加载,因为其操作被软件阻止 限制政策。有关更多信息,请与您的系统联系 管理员。
在NuGet程序包管理器控制台的情况下,这尤其成问题,因为控制台在发生错误后处于禁用/不可用状态。至少可以使用其他PowerShell主机。
几周前,我在新工作中设置工作站时出现问题,因为组策略设置正在应用 AllSigned 的 MachinePolicy 。通过将设置更改为 RemoteSigned 已解决该问题。我使用以下命令检查了此设置是否仍然存在:
Get-ExecutionPolicy -List
我还确认此 $ profile.CurrentUserAllHosts 文件存在但我的互联网搜索另一个“组策略设置”显示没有任何兴趣。我的PowerShell版本信息是:
$PSVersionTable
Name Value
---- -----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18408
BuildVersion 6.2.8370.0
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2
答案 0 :(得分:8)
如果我删除或移动问题配置文件脚本,那么我的所有PowerShell主机都会启动而不会出现错误,包括使用它的PowerShell ISE自己的当前用户当前主机< / em> script C:\ Users \ MyUserName \ Documents \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1
事实证明,我的所有主机配置文件脚本的问题是 完全空 !将任何内容添加到文件中,甚至是单个空格字符或注释,都允许所有各种PowerShell主机执行执行此配置文件脚本。我必须在某个时候清除此脚本的内容,而不是删除它。
不完全是一个直观的错误消息,这就是我发布此Q&amp; A样式条目以供将来参考的原因。
有趣的是,我能够在所有主机启动后执行空/空脚本,这个问题似乎特定于配置文件脚本。
答案 1 :(得分:0)
实际上,这看起来像AppLocker错误消息。有关它的一些信息可以找到here(但作者正在反向 - 他试图限制脚本使用)。
如果其他配置文件有效(除了profile.ps1),它可能只是一个拒绝规则。
答案 2 :(得分:0)
删除两个文件
C:\Users\MyUserName\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
C:\Users\MyUserName\Documents\WindowsPowerShell\profile.ps1