无法加载Powershell profile.ps1,因为其操作被软件限制策略阻止

时间:2014-06-11 02:01:02

标签: powershell

启动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

3 个答案:

答案 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