PAYATHON 2026

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

通常还是分行书写更合适,阅读和排查错误都更方便。

执行步骤

  1. 在开始菜单中搜索 PowerShell。
  2. 右键单击 PowerShell,选择“以管理员身份运行”。
  3. 将分行版本的代码完整粘贴到窗口中执行。
  4. 运行以下命令检查注册表值:
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,再检查预启动行为。

备注:内容仅供参考。