如何input多行命令?

是否有可能通过多行分割Powershell命令行?

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

你可以使用重音(或反音):

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

但是,在上述情况下,这只是必要的。 通常情况下,当一个命令在语法上不能在这个时候完成时,你会得到自动的续行。 这包括启动一个新的pipe道元素:

 Get-ChildItem | Select Name,Length 

自从|之后将无问题地工作 该命令不能完成,因为它缺less另一个pipe道元素。 另外打开大括号或任何其他种类的括号将允许直接连续的行:

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

类似于| 逗号也可以在一些情况下工作:

 1, 2 

请记住,虽然与JavaScript的自动分号插入类似,但也有一些事情被类似地破坏,因为换行符发生在有效语句的前面:

 return 5 

不pipe用。

最后,string(所有types)也可以延伸到一行之外:

 'Foo bar' 

然后,它们包含string中的换行符。

只是发现在后退和换行符之间一定不能有任何字符,即使是空白也会导致命令不能工作。

在大多数类C语言中,我故意把我的大括号放在我认为最容易阅读的地方。

PowerShell的parsing器可以识别一个语句显然不完整,并且可以看到下一行。 例如,想象一个带有可选脚本块参数的cmdlet:

     Get-Foo {............}

如果脚本块很长,你可能想写:

     GET-富
     {
         ...............
         ...............
         ...............
     }

但是这不起作用:parsing器将会看到两个语句。 第一个是Get-Foo ,第二个是脚本块。 相反,我写道:

     Get-Foo {
         ...............
         ...............
         ...............
     }

我可以使用续行字符(`),但这会造成难以阅读的代码,并引发错误。

因为这种情况需要开放的支撑在前一行,我遵循的模式到处都是:

     if(condition){
         .....
     }

请注意, if语句在语言语法中需要脚本块,则parsing器将在脚本块的下一行中查找,但为了保持一致性,我将左大括号保持在同一行上。

同样,在长pipe道的情况下,我打破了pipe道字符( | ):

     $ project.Items | 
         ?  {$ _。Key -eq“ProjectFile”} | 
         %{$ _。Value} | 
         %{$ _。EvaluatedInclude} |
         %{
             .........
         }

我假设你在命令行中讨论 – 如果它在脚本中,那么一个新行作为一个命令分隔符。

在命令行上,使用分号; ,比如说, 在命令行上签署一个PowerShell脚本,不换行。

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

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

我假设你在命令行中讨论 – 如果它在脚本中,那么一个新行作为一个命令分隔符。

在命令行中,使用分号“;”

如果您尝试将string分隔成多行,则可以使用“+”。 例如:

 $header = "Make," + "ComputerName," + "Model," + "Windows Version" 

看起来就像:

 $header = "Make,ComputerName,Model,Windows Version"