开发者问题收集

带有单引号的 Powershell 命令行参数将破坏命令行

2018-10-04
298

我正在从批处理文件调用 powershell 脚本

powershell createshortcut.ps1 "%~n0"

但是如果参数有一个单引号(扩展示例)

powershell createshortcut.ps1 "Divertirsi con l'ortografia"

解析器将抛出错误

The string is missing the terminator: '.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

显然参数的内容是未知的。

Powershell 版本:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  2189
2个回答

告诉 PowerShell 它将处理 -File 而不是 -Command

powershell -NoProfile -File createshortcut.ps1 "Divertirsi con l'ortografia"
lit
2018-10-04

使用单个反引号 (`) 进行转义:

powershell createshortcut.ps1 "Divertirsi con l`'ortografia"

或者用简单双引号替换双引号并使用 ''

powershell createshortcut.ps1 'Divertirsi con l''ortografia'
Akaizoku
2018-10-04