我需要有关设置 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,但又不想让用户对显示的任何对话框感到困惑时,此功能非常有用。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 登记- 读取、设置或删除注册表项和值,并从 .REG 文件保存和恢复。
- 注册表编辑器- 从文本(.REG)文件导入、导出或删除注册表设置。
- 注册表编辑器- 命令行开关。