新Acer笔记本右键‘用PowerShell运行’闪退及字符异常求助
新Acer笔记本PowerShell异常问题排查与解决建议
问题描述
将其他设备可正常运行的脚本文件夹通过U盘复制到新Acer笔记本(无论直接在U盘运行还是复制到本地),右键选择**"用PowerShell运行"**时,PS窗口仅闪一下就关闭(所有脚本均包含Read-Host语句);但在已打开的PS窗口中用.调用脚本则可正常执行,脚本调用的其他程序(如Scoop安装脚本)也能正常运行。
已尝试的解决操作
- 检查并修改执行策略,无效:
- 正常Win11主机(PS 7.3.9)执行策略:
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned - 问题设备(Win11笔记本,PS 7.4)执行策略:
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Unrestricted LocalMachine Undefined
- 正常Win11主机(PS 7.3.9)执行策略:
- 停用PowerShell后重启再启用,无效
- 卸载预装McAfee(除Acer自带程序外唯一软件)并多次重启,无效
- 排查路径问题:排除了路径含撇号的情况(网上类似问题的常见原因)
附加字符显示异常
重音字符显示不稳定:
- 简单脚本
accent.ps1内容:
该脚本可正常显示重音字符Write-Verbose "àèìòù" -Verbose Write-Host "àèìòù" - Scoop安装脚本中
Scoop già installato(意为"Scoop已安装")里的à显示为方框问号,此现象仅出现在该Acer笔记本上
补充信息
经提示了解到PowerShell 5和7的执行策略相互独立,修改PS5执行策略后,字符显示情况反转:
accent.ps1在PS5中显示异常,PS7中正常- Scoop脚本则相反:PS5中显示正常,PS7中异常
闪退问题解决建议
检查右键"用PowerShell运行"的默认关联程序
- 确认右键触发的是PowerShell 7还是PowerShell 5:打开
设置>应用>默认应用>按应用设置,找到PowerShell相关条目,查看默认关联。若默认是PS5,尝试切换为PS7测试,反之亦然。 - 修复右键菜单关联:使用
regedit检查以下路径的注册表项,确保命令行参数正确:- 对于PS7:
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command,默认值应为"C:\Program Files\PowerShell\7\pwsh.exe" "-Command" "& '%1'" - 对于PS5:
HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command,默认值应为"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "& '%1'"
- 对于PS7:
- 若注册表项异常,可手动修改或使用
Get-Command pwsh/Get-Command powershell获取正确路径后更新。
- 确认右键触发的是PowerShell 7还是PowerShell 5:打开
检查脚本执行时的错误输出
- 右键选择"打开方式>更多应用>选择其他应用>找到PowerShell(或PowerShell 7)>勾选始终使用此应用打开.ps1文件",然后运行脚本,观察是否有错误提示。若窗口仍闪退,可修改注册表命令行,添加
-NoExit参数:比如将命令改为"C:\Program Files\PowerShell\7\pwsh.exe" "-NoExit" "-Command" "& '%1'",这样窗口不会关闭,可查看错误信息。
- 右键选择"打开方式>更多应用>选择其他应用>找到PowerShell(或PowerShell 7)>勾选始终使用此应用打开.ps1文件",然后运行脚本,观察是否有错误提示。若窗口仍闪退,可修改注册表命令行,添加
检查系统环境变量与PowerShell配置文件
- 查看PowerShell配置文件(
$PROFILE)是否有异常代码:运行notepad $PROFILE,若文件不存在则忽略;若存在,检查是否有导致窗口关闭的逻辑(如exit语句)。 - 检查系统
PATH变量,确保PowerShell路径未被篡改,且无冲突的第三方工具路径。
- 查看PowerShell配置文件(
排查Acer预装软件干扰
- 尝试临时禁用或卸载Acer自带软件(如Acer Care Center、Acer Quick Access等),测试是否存在脚本拦截行为。
字符显示异常排查方法
检查PowerShell控制台的编码设置
- 在PS5中运行:
[Console]::OutputEncoding和[Console]::InputEncoding,查看编码是否为UTF-8或IBM437(默认);在PS7中运行:$OutputEncoding和[Console]::OutputEncoding,确认编码设置。 - 尝试临时修改编码:在PS5中执行
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8,在PS7中执行$OutputEncoding = [System.Text.Encoding]::UTF8,然后运行脚本测试字符显示。
- 在PS5中运行:
检查脚本文件的编码格式
- 使用记事本打开脚本,选择"文件>另存为",查看右下角的编码选项。若脚本是
ANSI编码,尝试改为UTF-8 BOM或UTF-8后重新运行。 - 使用PowerShell命令检查脚本编码:
Get-Content .\scoop-install.ps1 -Encoding Byte | Select-Object -First 3,若前三个字节是0xEF,0xBB,0xBF则为UTF-8 BOM,否则为其他编码。
- 使用记事本打开脚本,选择"文件>另存为",查看右下角的编码选项。若脚本是
检查系统区域设置
- 打开
设置>时间和语言>语言和区域>管理语言设置>更改系统区域设置,勾选"Beta版:使用Unicode UTF-8提供全球语言支持"(需重启系统),测试字符显示是否正常。 - 确认系统区域是否为意大利语(对应脚本中的意大利语重音字符),若不是,尝试切换为意大利语区域后测试。
- 打开
内容的提问来源于stack exchange,提问作者Federico Corradini
相关产品推荐
相关产品推荐

