因为这个问题继续吸引回答 被问题主体反驳或者没有解决实际问题, 请阅读以下关于你需要知道的简单摘要:
- 这是 没有的一个“为什么我的 PowerShell 默认安装不能运行脚本?”的问题。
- 这是 没有的一个“为什么我的 PowerShell 安装不能运行从互联网下载的脚本?”的问题。
- 问题是为什么
RemoteSigned
执行策略在不应该阻止脚本执行的时候却阻止脚本执行。RemoteSigned
是我想使用的 只有执行策略。我知道还有其他限制较少的政策。如果 那些政策是可以接受的替代品,我会直接使用它们 这个问题就不存在了。- 执行策略是 已经设置为
RemoteSigned
。 将其从RemoteSigned
改为RemoteSigned
不是一个解决方案。- 脚本文件在本地创建和存储。
- 脚本文件没有被阻塞。 脚本文件从未被阻塞(参见前一点)。
- 脚本文件无法解除阻塞 ,因为没有要解除阻塞的内容(参见前一点)。
- 脚本文件由管理员执行(尝试执行)。
Windows PowerShell
是唯一涉及的应用程序。不是Windows PowerShell ISE
也不是Command Prompt
也不是任何其他工具或 编辑是相关的。- 问题的原因已确定为 已经 (见已接受的答案)。将近8年过去了,我认为所有其他显而易见的事情 解释,不论是否适用,也已张贴。如 您认为不然 请阅读问题并存在 回答 完整无缺后再加你的
我在64位的 Windows 7专业版上使用 Windows PowerShell 2.0。我的 Desktop
上有一个脚本,当我尝试运行它时,它会导致以下错误:
File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
我既是域管理员又是本地管理员,如果我运行 Get-ExecutionPolicy -List
,我可以看到为配置 PowerShell 而创建的 Group Policy Object
在机器级别正确地应用了 RemoteSigned
执行策略:
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
我自己在 Notepad
中创建了脚本,并使用 系统内分泌’streams
实用程序和文件 Properties
对话框来确认脚本没有被视为来自互联网。如果我将脚本复制到域服务器上的网络共享,那么就允许执行该脚本。如果我运行 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
,那么仍然不允许执行本地脚本,这是有意义的,因为 MachinePolicy
范围内的执行策略将优先执行。
正如 about_Execution_Policies
(目前; 在提问的时候)所记录的,RemoteSigned
政策意味着:
脚本可以运行。
需要从 Internet 上下载的脚本和配置文件的可信发布者的数字签名 (包括电子邮件和即时通讯程序)
不需要在已运行的脚本上以及已在本地计算机上编写的脚本上进行数字签名(不是从 互联网)
冒险运行来自 Internet 以外的来源的未签名脚本和已签名但恶意的脚本。
我的脚本没有签名,但是因为它是在本地创建和执行的,所以它应该满足上面的第三个要点。所以..。