是否可以将PowerShell命令行拆分为多行?

在Visual Basic中,我可以在下一行中使用下划线(_)来继续命令。


当前回答

在PowerShell和PowerShell ISE中,也可以在每行末尾使用Shift + Enter进行多行编辑(而不是标准的反引号')。

其他回答

你可以在空格后面加严肃重音(反撇号):

Get-ChildItem -Recurse `
  -Filter *.jpg `
  | Select LastWriteTime

但是,只有在如上所示的情况下才需要这样做。通常,当一个命令在语法上不能完整时,您会得到自动续行。这包括启动一个新的管道元素:

Get-ChildItem |
  Select Name,Length

将毫无问题地工作,因为在|之后,命令不能完成,因为它缺少另一个管道元素。同时,开大括号或任何其他类型的括号将允许直接续行:

$x=1..5
$x[
  0,3
] | % {
  "Number: $_"
}

和|类似,逗号也可以在某些情况下使用:

1,
2

不过,请记住,与JavaScript的自动分号插入类似,有一些东西也会被破坏,因为换行符出现在前面有有效语句的位置:

return
  5

不会起作用。

最后,字符串(在所有类型中)也可以扩展到单行以外:

'Foo
bar'

然后,它们在字符串中包含换行符。

扩展一下克里斯托巴利托的回答:

我假设您谈论的是命令行——如果是在脚本中,那么新行>充当命令分隔符。 在命令行中,使用分号';'

例如:

在命令行上签署PowerShell脚本。没有换行。

powershell -Command "&{$cert=Get-ChildItem –Path cert:\CurrentUser\my -codeSigningCert ; Set-AuthenticodeSignature -filepath Z:\test.ps1 -Cert $cert}

在windows终端(powershell配置文件),我可以简单地单击Shift-Enter对我来说很好。

PS C:\xxx2021> Get-ChildItem -Include *remote* -Recurse |
>> Sort-Object -Property LastWriteTime -Descending  |
>> Select-Object LastWriteTime, Name -First 25

LastWriteTime        Name
-------------        ----
12/5/2021 5:04:02 PM remote-control-car-BatteryPack-Number-2021-12-03.pdf

PS C:\xxx2021>enter code here

只要在这里加上一个极端情况。这可能会帮你节省5分钟。如果你使用一连串的动作,你需要在行末加上“。”,然后在“'”后面留下一个空格(反勾号)。这是我很不容易才发现的。

$yourString = "HELLO world! POWERSHELL!". `
                  Replace("HELLO", "Hello"). `
                  Replace("POWERSHELL", "Powershell")

在PowerShell和PowerShell ISE中,也可以在每行末尾使用Shift + Enter进行多行编辑(而不是标准的反引号')。