在 powershell 中格式化包含逗号的命令,找不到正确的转义方式

Format a command in powershell including a comma, can't find the right way to escape

我有一个命令需要在 Powershell 脚本中 运行,命令是:

".\pacli DELETEUSER DESTUSER='"dilip.v@astramwp`,com"' sessionid=333" | invoke-expression

这里 :dilip.v@astramwp,com 的逗号 (,) 不是一个错误,这就是让我感到困难的原因。

我试图用 `(反引号)转义逗号 - 但它不起作用。

我该如何逃脱?

我收到错误消息:

parse error, expecting `';''

以及一些变体:

Unexpected token 'dilip.v@astramwp`,com"`' sessionid=333"' in expression or statement.
At C:\CyberArk\Harel CyberArk WebService\deleteUser.ps1:6 char:70
+ ".\pacli DELETEUSER DESTUSER='"dilip.v@astramwp`,com"' sessionid=333" <<<<  | invoke-expression
+ CategoryInfo          : ParserError: (dilip.v@astramwp`,com"`' sessionid=333":String) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken

当我使用 cmd.exe 并用 "" 包装它时,该命令有效。

".\pacli DELETEUSER DESTUSER='"dilip.v@astramwp`,com"' sessionid=333"

你在双引号里有双引号在单引号里,所以里面的双引号会终止字符串,所以这会被解析为三个值:

".\pacli DELETEUSER DESTUSER='"
dilip.v@astramwp`,com
"' sessionid=333"

答案是转义,带反引号(`),内双引号:

".\pacli DELETEUSER DESTUSER='`"dilip.v@astramwp`,com`"' sessionid=333"

因此这些双引号将传递给命令。

(如问题评论中所述,您还需要在字符串前加上 & 前缀,以使 PSH 将其视为命令。)