eXX*_*XXL 379 powershell multiline
是否可以将PowerShell命令行拆分为多行?
在Visual Basic中,我可以使用下划线(_)继续下一行中的命令.
Joe*_*oey 576
您可以使用空格,然后使用重音(反引号):
Get-ChildItem -Recurse `
-Filter *.jpg `
| Select LastWriteTime
Run Code Online (Sandbox Code Playgroud)
但是,在上述情况下,这只是必要的.通常,当命令在该点语法上无法完成时,您将获得自动行继续.这包括启动一个新的管道元素:
Get-ChildItem |
Select Name,Length
Run Code Online (Sandbox Code Playgroud)
|因为它缺少另一个管道元素,所以在命令无法完成之后将无问题地工作.同时打开花括号或任何其他类型的括号将允许直接继续行:
$x=1..5
$x[
0,3
] | % {
"Number: $_"
}
Run Code Online (Sandbox Code Playgroud)
类似于|逗号也可以在某些情况下使用:
1,
2
Run Code Online (Sandbox Code Playgroud)
请记住,虽然,类似于JavaScript的自动分号插入,也有一些事情,也同样打破,因为线路中断发生在那里的一个点是由一个有效的声明之前:
return
5
Run Code Online (Sandbox Code Playgroud)
不管用.
最后,字符串(各种类型)也可能超出一行:
'Foo
bar'
Run Code Online (Sandbox Code Playgroud)
它们包括字符串中的换行符.
Nef*_*ets 62
我发现后面的勾号和换行符之间一定不能有任何字符.即使是空格也会导致命令不起作用.
Jay*_*uzi 36
在大多数类C语言中,我故意将我的括号放在我认为它们使代码最容易阅读的地方.
PowerShell的解析器识别语句明显不完整,并查看下一行.例如,假设一个带有可选脚本块参数的cmdlet:
Get-Foo { ............ }
如果脚本块很长,你可能想写:
Get-Foo
{
...............
...............
...............
}
但这不起作用:解析器将看到两个语句.第一个是Get-Foo第二个,第二个是脚本块.相反,我写道:
Get-Foo {
...............
...............
...............
}
我可以使用行继续符(`),但这会产生难以阅读的代码,并引发错误.
因为这种情况需要将开放式大括号放在上一行,所以我在任何地方都遵循这种模式:
if (condition) {
.....
}
请注意,
if语句需要语言语法中的脚本块,因此解析器将查看脚本块的下一行,但为了保持一致性,我将开括号保留在同一行.
同样地,在长管道的情况下,我在管道字符(|)之后断开:
$project.Items |
? { $_.Key -eq "ProjectFile" } |
% { $_.Value } |
% { $_.EvaluatedInclude } |
% {
.........
}
小智 28
我假设您在命令行上谈论 - 如果它在脚本中,那么新行>充当命令分隔符.
在命令行中,使用分号";"
例如:
在命令行上签署PowerShell脚本.没有换行符.
powershell -Command "&{$cert=Get-ChildItem –Path cert:\CurrentUser\my -codeSigningCert ; Set-AuthenticodeSignature -filepath Z:\test.ps1 -Cert $cert}
Run Code Online (Sandbox Code Playgroud)
Bad*_*Bad 16
在PowerShell和PowerShell ISE中,也可以在每行末尾使用Shift+ Enter进行多行编辑(而不是标准反引号`).
只需在此处添加一个角落案例。它可能会为您节省 5 分钟。如果您使用一系列操作,则需要放置“.”。在行尾留一个空格,后跟“`”(反引号)。我发现这很困难。
$yourString = "HELLO world! POWERSHELL!". `
Replace("HELLO", "Hello"). `
Replace("POWERSHELL", "Powershell")
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您尝试将字符串分成多行,则可以使用“+”。例如:
$header = "Make," +
"ComputerName," +
"Model," +
"Windows Version"
Run Code Online (Sandbox Code Playgroud)
看起来就像:
$header = "Make,ComputerName,Model,Windows Version"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
345233 次 |
| 最近记录: |