从批处理脚本静默更改 Powershell 执行策略

从批处理脚本静默更改 Powershell 执行策略

我需要有关设置 powershell 注册表值的帮助。路径是

[hkey_local_machine\system32\windows\microsoft\powershell\1\shellids\microsoft.powershell] “Path”=“c:\windows\system32\windowspowershell\v1.0\powershell.exe” “ExecutionPolicy”=“unrestricted”

由于我从已知良好的机器导入了此文件,因此当我运行 .reg 文件时,它运行正常。但我希望在批处理文件中使用它。

当我手动调用命令提示符时,放入路径例如c:\powershell.reg,这会导入值并根据需要覆盖注册表设置。
但是,如果我在批处理文件中执行相同的操作,注册表中的值不会更改。在批处理文件中使用 reg add 命令,值不起作用。

答案1

为什么不简单地通过 CMD 运行以下命令

powershell -command "& {Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force}"

或者直接在 Powershell 中执行此操作(毕竟该命令就是用于这个目的):

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force

答案2

如何从批处理脚本静默更改 Powershell 执行策略?

警告:

以下说明包含修改注册表的步骤。但是,如果错误地修改注册表,可能会出现严重问题。

因此,请确保仔细遵循这些步骤。为了增加保护,请在修改注册表之前备份它。然后,如果出现问题,您可以恢复注册表。

有关详细信息,请参阅如何在 Windows 中备份和恢复注册表。


reg解决方案

@echo off
reg add HKLM\system32\windows\microsoft\powershell\1\shellids\microsoft.powershell /v "Path" /d "c:\windows\system32\windowspowershell\v1.0\powershell.exe"
reg add HKLM\system32\windows\microsoft\powershell\1\shellids\microsoft.powershell /v "ExecutionPolicy" /d "unrestricted"

regedit解决方案

@echo off
regedit /s file.reg

其中file.reg包含以下内容:

[hkey_local_machine\system32\windows\microsoft\powershell\1\shellids\microsoft.powershell] 
"Path"="c:\windows\system32\windowspowershell\v1.0\powershell.exe"
"ExecutionPolicy"="unrestricted"

笔记:

  • [/s|-s]

    当在命令行上指定文件名时,此开关用于隐藏通常会显示的任何信息对话框。当应用程序的安装程序想要使用 .REG 文件执行 REGEDIT.EXE,但又不想让用户对显示的任何对话框感到困惑时,此功能非常有用。


进一步阅读

相关内容