PowerShell 禁用 Microsoft Edge 预启动时报 Unexpected Token
结论
出现 Unexpected Token,是因为多条 PowerShell 语句被粘贴到了同一行,语句之间没有换行或分号。把每条语句分行执行即可。由于命令需要写入 HKLM 注册表,还要以管理员身份运行 PowerShell。
$registryPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\PreLaunch\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge'
$name = 'Enabled'
$value = 0
New-Item -Path $registryPath -Force | Out-Null
New-ItemProperty -Path $registryPath -Name $name -Value $value -PropertyType DWord -Force | Out-Null
报错原因
原命令由五条独立语句组成:
$registryPath = ...
$name = ...
$value = ...
New-Item ...
New-ItemProperty ...
这些语句粘贴到同一行后,PowerShell 无法识别前一条赋值语句的结束位置,于是将后面的 $Name、$value 和 New-Item 视为当前表达式中的意外内容,并报告 Unexpected token。
变量名的大小写不会引发这个问题。PowerShell 变量名不区分大小写,$Name 和 $name 指向同一个变量。
注册表值类型为 DWord 时,建议直接使用整数 0:
$value = 0
字符串写法如下:
$value = "0"
PowerShell 有时会自动转换字符串,但使用整数更直观,也省去了不必要的类型转换。
如果必须写在同一行
每条语句之间需要用分号分隔:
$registryPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\PreLaunch\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge'; $name = 'Enabled'; $value = 0; New-Item -Path $registryPath -Force | Out-Null; New-ItemProperty -Path $registryPath -Name $name -Value $value -PropertyType DWord -Force | Out-Null
通常还是分行书写更合适,阅读和排查错误都更方便。
执行步骤
- 在开始菜单中搜索 PowerShell。
- 右键单击 PowerShell,选择“以管理员身份运行”。
- 将分行版本的代码完整粘贴到窗口中执行。
- 运行以下命令检查注册表值:
Get-ItemProperty -Path $registryPath -Name $name
输出中的 Enabled 应为 0。如果只想读取这个值,可以运行:
(Get-ItemProperty -Path $registryPath -Name $name).Enabled
预期结果为:
0
常见后续错误
如果出现 Access to the registry key is denied 或类似的权限错误,通常是因为当前 PowerShell 没有管理员权限。
如果系统提示找不到注册表驱动器或路径,请确认命令是在 Windows PowerShell 或安装了注册表提供程序的 PowerShell 环境中运行,而非在其他操作系统中运行。
路径中的 Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge 对应旧版 Microsoft Edge。当前基于 Chromium 的 Microsoft Edge 未必适用这项设置,需要结合实际的 Edge 版本和组织策略重新确认。修改后可以关闭 Edge、重启 Windows,再检查预启动行为。
备注:内容仅供参考。
