是否可以将PowerShell命令行拆分为多行?
在Visual Basic中,我可以在下一行中使用下划线(_)来继续命令。
是否可以将PowerShell命令行拆分为多行?
在Visual Basic中,我可以在下一行中使用下划线(_)来继续命令。
当前回答
你可以在空格后面加严肃重音(反撇号):
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'
然后,它们在字符串中包含换行符。
其他回答
只要在这里加上一个极端情况。这可能会帮你节省5分钟。如果你使用一连串的动作,你需要在行末加上“。”,然后在“'”后面留下一个空格(反勾号)。这是我很不容易才发现的。
$yourString = "HELLO world! POWERSHELL!". `
Replace("HELLO", "Hello"). `
Replace("POWERSHELL", "Powershell")
$scriptBlock = [Scriptblock]::Create(@'
echo 'before'
ipconfig /all
echo 'after'
'@)
Invoke-Command -ComputerName AD01 -ScriptBlock $scriptBlock
源 不要使用反引号
使用分号;分开命令 在任何反斜杠上替换双反斜杠\\。 使用“'传递安全地址到交换机命令,如“'PATH'”。
这个ps1命令安装地区pfx证书。
powershell -Command "$pfxPassword = ConvertTo-SecureString -String "12345678" -Force -AsPlainText ; Import-PfxCertificate -FilePath "'C:\\Program Files\\VpnManagement\\resources\\assets\\cert\\localhost.pfx'" Cert:\\LocalMachine\\My -Password $pfxPassword ; Import-PfxCertificate -FilePath "'C:\\Program Files\\VpnManagement\\resources\\assets\\cert\\localhost.pfx'" Cert:\\LocalMachine\\Root -Password $pfxPassword"
在多行中使用'字符分隔命令
在powershell中有很多方法来继续一行,用管道,括号,圆括号,操作符,点,甚至用逗号。这里有一个关于它的博客:https://get-powershellblog.blogspot.com/2017/07/bye-bye-backtick-natural-line.html
你也可以在foreach和if语句之后继续。