无法通过“上下文菜单»编辑”打开文件名中带有逗号的 Powershell 脚本

无法通过“上下文菜单»编辑”打开文件名中带有逗号的 Powershell 脚本

我注意到,当你尝试通过以下方式打开 PowerShell 脚本 (.ps1) 时,Windows 10(至少是当前稳定版本 1607)无法正确转义文件名上下文菜单 » 编辑

虽然可以正确处理“与”号和空格,但 Windows 无法打开名称中带有逗号的文件 - 文件名在逗号处被截断。

在此处输入图片描述

导致错误

在此处输入图片描述

我正在寻找该问题的解决方案,无论是通过注册表修复还是通过添加引号、转义逗号或其他任何方法。

答案1

您需要将该注册表项中的值HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\Edit\Command从更改"C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe" "%1""C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe" """%1"""。或者您可以使用以下 PowerShell 命令来执行此操作:

Set-ItemProperty HKLM:\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\Edit\Command '(default)' '"C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe" """%1"""'

答案2

构建于@用户364455的答案是,这会修改 >Edit 和 >Open 上下文菜单项,允许您通过双击 .ps1 文件或在 Explorer 中右键单击并选择“编辑”,在 ISE 中以提升权限打开 .ps1 文件(路径中有逗号)。此处使用字符串来避免转义引号的麻烦。不幸的是,PowerShell 控制台窗口会弹出一瞬间,但有解决方法(我发现最常见的解决方法涉及 VBScript)。

电源外壳:

$newValue = @'
PowerShell.exe -NoProfile -WindowStyle Hidden -NonInteractive -Command "& {Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe -ArgumentList '""""""""%1""""""""' -Verb RunAs}"
'@

# Open
Set-ItemProperty -Path HKLM:\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\Open\Command -Name '(default)' -Value $newValue -Force

# Edit
Set-ItemProperty -Path HKLM:\SOFTWARE\Classes\SystemFileAssociations\.ps1\Shell\Edit\Command -Name '(default)' -Value $newValue -Force

.reg 版本

Windows Registry Editor Version 5.00

; Open
[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Open\Command]
@="PowerShell.exe -NoProfile -WindowStyle Hidden -NonInteractive -Command \"& {Start-Process -FilePath C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell_ise.exe -ArgumentList '\"\"\"\"\"\"\"\"%1\"\"\"\"\"\"\"\"' -Verb RunAs}\""

; Edit
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.ps1\Shell\Edit\Command]
@="PowerShell.exe -NoProfile -WindowStyle Hidden -NonInteractive -Command \"& {Start-Process -FilePath C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell_ise.exe -ArgumentList '\"\"\"\"\"\"\"\"%1\"\"\"\"\"\"\"\"' -Verb RunAs}\""

相关内容