在 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 将其视为命令。)
我有一个命令需要在 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 将其视为命令。)