我刚刚升级到 Windows 7,我想启动并运行我的 Powershell 配置文件。
我加载了 PS,并使用“以管理员身份运行”权限将执行策略设置为不受限制,然后将我的配置文件放在适当的位置。我重新加载了 PS,但出现错误。
获取执行策略返回受限。
但是,注册表检查返回不受限制。
重启后,情况依然一样。
进一步检查后,我发现在管理员模式下,我拥有不受限制的权力,但作为普通用户,我拥有受到限制的权力。
今天在 XP 中做了一些 Powershell 工作后,我注意到在 XP 中,Powershell 始终处于管理员模式。显然它在 Win7 上变成了用户模式。啊!
如何让我的配置文件脚本在常规用户模式下执行?
答案1
我没有遇到任何问题。以下是我在一台非常干净的 Windows 7 机器上测试的结果:
- 以管理员身份登录
- 以管理员身份运行 PowerShell
Set-ExecutionPolicy RemoteSigned
- 以访客身份登录
- 运行 PowerShell
Get-ExecutionPolicy
返回RemoteSigned
答案2
我会右键单击 powershell,转到兼容性选项,选择“以管理员身份运行此程序”
如果使用脚本,你可以使用开始++的 sudo 实现。有一种方法可以在不使用工具的情况下完成此操作,但使用该工具更简单,而且它还添加了一些其他有用的工具。
答案3
您是从命令行还是从开始菜单运行它。对我来说,只有从开始菜单链接运行 powershell 时,我才会获得“不受限制”的策略。
从命令行或其他程序启动它,我只能获得“受限”策略。除了从开始菜单链接运行 powershell 之外,找不到此问题的任何解决方法...
答案4
这对我来说暂时有效,直到我重新启动计算机,那时我必须重新运行脚本。我知道作用域 CurrentUser 和 LocalMachine 写入注册表项,因此您会认为该设置是持久的/永久的,但是,在我的域上重新启动后,它似乎恢复为默认的 AllSigned。
# SetExecutionPolicyToRemoteSigned.ps1
# Not persistent. Need to run this after every server reboot.
Write-Output "Setting local Powershell policy to RemoteSigned"
Write-Output ""
Set-ExecutionPolicy -scope CurrentUser Undefined -Force
#Set-ExecutionPolicy -scope Process Undefined -Force
Set-ExecutionPolicy -scope LocalMachine Undefined -Force
Set-ExecutionPolicy -scope CurrentUser RemoteSigned -Force
#Set-ExecutionPolicy -scope Process RemoteSigned -Force
Set-ExecutionPolicy -scope LocalMachine RemoteSigned -Force
Write-Output "Finished."
Get-ExecutionPolicy -list
Start-Sleep -s 10