我有一个从命令行获取参数的 powershell 脚本。
传递的参数是一个带有换行符的字符串,但我无法让它按我希望的那样工作。
命令行运行示例:
powershell.exe -command "& {& 'C:\My Scripts\Script.ps1' "Some Text`nWoo Hoo"}"
上面的脚本只传递了文本Some。如果我在传递的文本周围使用单引号,则 `n 换行符将按字面解释,而不是换行符。
我相信有办法解决这个问题!
谢谢
最佳答案
由于您的整个命令字符串(从 cmd.exe
调用时是必要的)双引号,您必须转义嵌入双引号引号为 \"
(即使 在 PowerShell 中,`
用作转义字符,如嵌入式 `n 中所用
转义序列):
# From cmd.exe
powershell.exe -command "& 'C:\My Scripts\Script.ps1' \"Some Text`nWoo Hoo\""
另请注意,调用 PowerShell CLI 时无需使用 -Command "& { ... }"
- 只需 -Command "..."
就足够了。
在您的情况下,嵌入双-引号 (\"...\"
),即使用(转义)expandable string必须将 `n
转义序列插值到实际的换行符。
在 verbatim(文字)字符串就足够的情况下,您可以使用单引号('...'
).
参见 this answer 的底部部分有关 PowerShell 中字符串文字的更多信息。
关于命令行、引号和新行上的 Powershell 内联命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64815643/