以下是我正在运行的命令的示例:
PS C:\> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
PS C:\> Set-ExecutionPolicy Unrestricted -Scope CurrentUser
PS C:\> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
我想将 设置CurrentUser
为Unrestricted
,但似乎无法做到。我检查了组策略是否已实施,如这个MSDN文档,但没有找到任何已配置的内容。
关于如何设置它,有什么线索吗?
答案1
就像其他人所说的那样,这似乎是 Windows 10 预览版中的一个错误。我只需提供 -Force 参数就可以让它工作。
本地机器的设置:
Set-ExecutionPolicy RemoteSigned -Force
当前用户的设置:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
答案2
这似乎是 Windows 10 中的一个错误。我必须创建该项并在该项中创建一个用数据HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
调用的字符串值,然后它才能工作。即便如此,我似乎也无法在不修改注册表的情况下更改它。ExecutionPolicy
Unrestricted
答案3
我有一个比 OP 更普遍的 powershell 策略问题,但最终需要在这里和其他地方找到的答案才能让我的 Win10 周年纪念版正确更新其策略:
1) 确保此注册表项存在,并将其设置为您想要允许的最低安全级别:HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
Name:ExecutionPolicy
Type: REG_SZ
Data:Unrestricted
2) 确保此注册表项存在,并将其设置为您想要允许的最低安全级别:HKLM:\Software\Policies\Microsoft\Windows\PowerShell
Name:ExecutionPolicy
Type: REG_SZ
Data: Unrestricted
3) 通过运行更新您的组策略gpedit.msc
,并导航到Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell
选择Turn on Script Execution
,然后policy setting
使用进行编辑Enabled
,并在其下方的框中Execution Policy
将其设置为Allow All Scripts
完成所有这些操作后,您可以使用 ddcruver 的答案,根据需要强制更新策略。如果您将策略设置为“不受限制”,我建议将所有设置设置为Get-ExecutionPolicy -List
更严格的设置,例如RemoteSigned
,因为恶意 powershell 脚本是基于内存的 Windows 恶意软件的主要原因之一。
答案4
更改执行策略之前必须以提升模式运行 powershell