我想从powershell窗口运行以下命令。
My-Command1 -f “firstline secondline thirdline”
我希望能够为-f参数复制和粘贴一堆行--这可以做到吗?我试过复制和粘贴,但不起作用。
-f
xqk2d5yq1#
是的,您*可以 * 使用和粘贴多行参数,但必须以string literals * 形式提供 *,即 * 带有分隔符 *(引号)-请参阅下面关于粘贴多行 * 命令 * 的章节。
在最简单的情况下,键入 * 开始 * 分隔符(",或者,对于 * literal * 内容,最好是'),然后粘贴您的多行值,再键入 * 结束 * 分隔符;例如:
"
'
Write-Output ' # <- paste here, then type ' to close the string
Write-Output @' # <- Press ENTER, then paste, # then press ENTER again, then type '@ to close the here-string
如果您发现自己需要 * 频繁*粘贴多行值,则可以设置自定义PSReadLine键处理程序,如下所示:
PSReadLine
# Define keyboard shortcut Alt-V to paste the current clipboard # content as a verbatim here-string. Set-PSReadLineKeyHandler 'alt+v' -ScriptBlock { [Microsoft.PowerShell.PSConsoleReadLine]::Insert("@'`n`n'@") foreach ($i in 1..3) { [Microsoft.PowerShell.PSConsoleReadLine]::BackwardChar() } [Microsoft.PowerShell.PSConsoleReadLine]::Insert((Get-Clipboard -Raw)) foreach ($i in 1..3) { [Microsoft.PowerShell.PSConsoleReadLine]::ForwardChar() } }
然后可以使用Alt-V将剪贴板上当前的(多行)文本作为逐字的here-string粘贴(根据需要自定义键盘快捷键)。
从上文可以得出:
if
else
# Pasting this currently malfunctions, except on # Windows with Ctrl-V if ($true) { 'yup' } else { 'nah' }
1条答案
按热度按时间xqk2d5yq1#
是的,您*可以 * 使用和粘贴多行参数,但必须以string literals * 形式提供 *,即 * 带有分隔符 *(引号)-请参阅下面关于粘贴多行 * 命令 * 的章节。
在最简单的情况下,键入 * 开始 * 分隔符(
"
,或者,对于 * literal * 内容,最好是'
),然后粘贴您的多行值,再键入 * 结束 * 分隔符;例如:如果您发现自己需要 * 频繁*粘贴多行值,则可以设置自定义
PSReadLine
键处理程序,如下所示:然后可以使用Alt-V将剪贴板上当前的(多行)文本作为逐字的here-string粘贴(根据需要自定义键盘快捷键)。
从上文可以得出:
if
语句的else
分支被放置在 * 其自己的行 * 上,则if
分支被认为是完整的语句并且首先提交,从而在随后提交else
分支时导致语法错误;例如: