由于某些限制,我必须从Windows命令提示符执行Power Shell命令
powershell -Command "(gc C:\my_configuration.conf) -replace 'INSERT_URL', \`"https://mytestserver/WW48.2'22/testing.bin\`" | Out-File C:\my_configuration.conf"
但是,我不断地得到ParserError
,如下所示
The string is missing the terminator: '.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
我应该如何正确地用双引号将URL字符串括起来?谢谢您的回答。
2条答案
按热度按时间dgiusagp1#
删除
"
之前的```,您的命令应该可以工作;也就是说,**从cmd.exe
/外部PowerShell调用powershell.exe
时,请使用\"
,而不是\
"(或``"
)**以转义"
字符:虽然您确实需要对嵌入在整个
"..."
命令字符串中的"
字符进行转义,但将它们**转义为\"
**就足够了-无需 * 还 * 使用,即PowerShell常用的[escape character](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Special_Characters)。 PowerShell *CLI*([`powershell.exe`](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_powershell_exe))需要`\`-转义`"`,以便更好地与大多数CLI保持一致,即使 * 在PowerShell会话内 * 您需要使用``"`或(仅在`"..."`内)`""`。[1] 你只需要同时使用`\`和
--在``"的格式中,注意```是第一个--如果你嵌入的
"..."本身包含
"`字符;一个人为的例子:正如iRon所指出的,替代解决方案是使用嵌入式
'...'
引用(单引用)。由于您的URL本身包含一个
'
字符,因此必须将该字符转义为''
:[1]在PowerShell (Core) 7+(其CLI为
pwsh.exe
)中,您也可以在整个"..." on the command line too, which is actually the more robust choice when calling from
命令行. When calling
powershell.exefrom
命令行, the robust choice is
“^"”(sic) - see [this answer](https://stackoverflow.com/a/49060341/45375). However, the PowerShell CLI recognizes
“in _both_ editions, and
“also works for
“chars. _not_ inside overall
“...""中使用""
。ecfsfe2w2#
尝试使用此语法,始终有效
你不用担心会逃脱什么。
验证码:
EDIT1:检查here中的URL特殊字符。单引号(')可以通过硬编码字符串中的替换(%27)来处理。(我在上面的第二个代码示例中更改了它)