powershell - 如何在 Invoke-Expression -Command 中转义“at 符号”(@)?
问题描述
当我在命令行中运行此命令时,它按预期工作:
C:\>p4 changes @2019/01/16,@now
...
但是当我在 powershell 脚本中使用它时,我无法让它工作。
第一次尝试:
PS C:\> Invoke-Expression -Command "p4 changes @2018/01/16, @now"
Invoke-Expression : At line:1 char:25
+ p4 changes @2018/01/16, @now
+ ~~~~
Splatted variables like '@now' cannot be part of a comma-separated list of arguments.
At line:1 char:1
+ Invoke-Expression -Command "p4 changes @2018/01/16, @now"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
+ FullyQualifiedErrorId : SplattingNotPermittedInArgumentList,Microsoft.PowerShell.Commands.InvokeExpressionCommand
转义逗号(成功):
PS C:\> Invoke-Expression -Command "p4 changes @2018/01/16',' @now"
p4 : Unintelligible revision specification '2018/01/16'.
At line:1 char:1
+ p4 changes @2018/01/16',' @now
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Unintelligible ...n '2018/01/16'.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
现在我认为问题在于“at character”(“@”)在某种程度上被解释。但我未能使用多种方法逃脱它。如何做到这一点?
UPD测试您的想法:
重音:
PS C:\> Invoke-Expression -Command "p4 changes `@2018/01/16',' `@now"
p4 : Unintelligible revision specification '2018/01/16'.
At line:1 char:1
+ p4 changes @2018/01/16',' @now
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Unintelligible ...n '2018/01/16'.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
单引号(逗号问题):
PS C:\> Invoke-Expression -Command 'p4 changes @2018/01/16, @now'
Invoke-Expression : At line:1 char:25
+ p4 changes @2018/01/16, @now
+ ~~~~
Splatted variables like '@now' cannot be part of a comma-separated list of arguments.
At line:1 char:1
+ Invoke-Expression -Command 'p4 changes @2018/01/16, @now'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
+ FullyQualifiedErrorId : SplattingNotPermittedInArgumentList,Microsoft.PowerShell.Commands.InvokeExpressionCommand
解决方案
停止使用双引号,如果您没有可扩展的内容,请使用单引号。请参阅about_Quoting_Rules的文档
否则就像其他人所说,使用反引号(`
)。
推荐阅读
- javascript - Firebase 网络代码实验室:缺少应用配置值“appId”
- python-3.x - 如何在 Python 版本 3 中将每个 8 位拆分为 24 位
- sql - 如何引用 WHERE 子句中计算的另一个字段?
- semantic-versioning - 如果行为保持不变,更改函数返回的类型是否构成向后不兼容的更改?
- excel - 如何修复运行时错误 6124“您不能编辑此选择,因为它受到保护”
- html - 我如何知道可变高度内容的背景图像的大小?
- javascript - 根据起始坐标和预定义角度在javascript中获取结束线坐标
- sql - where 子句中每个键的默认值
- c++ - 参数包中的过滤器类型
- excel - 如何修复表格中错误的标题行