0

当我设置我的系统时,我使用了一些配置脚本来让我舒适地玩耍。

基于,我通过双击以下内容运行enableps.js

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

因为-noexit我可以在显示的 PowerShell 窗口中发出:

Get-ExecutionPolicy 

并按预期获得:

RemoteSigned

不幸的是,当打开一个新的 PowerShell 实例时,该策略一直是Restricted.

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

cscript  "path\to\enableps.js"

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

那么如何使用标准双击(加上相关的 Windows 提示符)使事情正常工作?

4

3 回答 3

1

...解决方案是:

双击文件:

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

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

考虑替换RemoteSignedUnrestricted以允许运行下载的脚本。

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

于 2014-10-06T20:29:52.187 回答
1

您需要运行该命令并为其提供-Scope参数,以便它适用于当前会话之外的更多内容。添加参数:

-Scope CurrentUser
于 2014-10-06T19:33:56.150 回答
0

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

于 2014-10-06T20:31:03.230 回答