用于更改PowerShell ExecutionPolicy的脚本

时间:2014-10-06 12:58:42

标签: powershell batch-file cmd jscript privilege-elevation

当我设置我的系统时,我使用了许多配置脚本来让我舒适的地方玩。

根据this,我双击以下enableps.js

进行操作
new ActiveXObject("Shell.Application").ShellExecute(
   "powershell", "-noexit -Command \"& Set-ExecutionPolicy RemoteSigned\"",  "", "runas");

由于我可以在显示的PowerShell窗口中发出-noexit

Get-ExecutionPolicy 

并按预期得到:

RemoteSigned

不幸的是,在打开PowerShell的新实例时,策略保持为Restricted

如果我在标准cmd提示符下运行:

cscript  "path\to\enableps.js"

它有效。但是,如果我在enableps.cmd批处理中嵌入命令并再次尝试通过双击运行它,则它不起作用。如果我右键单击enableps.cmd并使用Runas-Administrator条目,它将再次起作用。

那么如何才能使用标准双击(加上相关的Windows提示符)?

3 个答案:

答案 0 :(得分:1)

您需要运行该命令并为其指定-Scope参数,以使其适用于当前会话以上。添加参数:

-Scope CurrentUser

答案 1 :(得分:1)

......解决方案是:

双击文件:

// enableps.js
// -----------

new ActiveXObject("Shell.Application").ShellExecute(
   "powershell", "-Command \"Set-ExecutionPolicy RemoteSigned\" -Scope CurrentUser",  
   "", "runas");

考虑将RemoteSigned替换为Unrestricted以允许运行下载的脚本。

归功于TheMadTechnician,无论如何都没有写完整的代码。

答案 2 :(得分:0)

默认情况下,如果系统尚未提升,则系统范围内的更改将要求您提升流程。如果您希望脚本在计算机级别禁用执行策略,那么您将需要关闭UAC,否则您将必须使用shellExecute运行您的cscript,这将向用户显示所需的UAC批准对话框。