7 ответов:
вы можете использовать серьезный акцент (или backtick):
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'они включают разрывы строк в строке, то.
только что узнал, что не должно быть любой символ между задним тиком и разрывом строки, даже пробелы заставят команду не работать.
в большинстве C-подобных языков я намеренно размещаю свои фигурные скобки там, где я думаю, что они делают код проще всего читать.
синтаксический анализатор PowerShell распознает, когда оператор явно не завершен, и смотрит на следующую строку. Например, представьте себе командлет, который принимает необязательный параметр блока сценария:
Get-Foo { ............ }если блок скрипта очень длинный, вы можете написать:
Get-Foo { ............... ............... ............... }но это не сработает: парсер увидит два оператора. Первый это
Get-Fooи второй блок скрипта. Вместо этого я пишу:Get-Foo { ............... ............... ............... }я мог бы использовать символ продолжения строки ( ` ), но это делает код трудночитаемым и приглашает ошибки.
поскольку этот случай требует, чтобы открытая скобка была на предыдущей строке, я следую этой схеме везде:
if (condition) { ..... }отметим, что
ifоператоры требуют блок скрипта в грамматике языка, поэтому синтаксический анализатор будет искать в следующей строке блок скрипта, но для согласованности я держу открытую скобку на одной линии.Simlarly, в случае длинных трубопроводов, я ломаюсь после символа трубы (
|):$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в конце каждой строки для многострочного редактирования (вместо стандартного Апостроф`).
Я предполагаю, что вы говорите о командной строке-если это в скрипте, то новая строка действует как разделитель команд.
в командной строке, используйте точку с запятой ';'
Если вы пытаетесь отдельные строки на несколько строк, вы можете использовать "+". Например:
$header = "Make," + "ComputerName," + "Model," + "Windows Version"будет выглядеть как:
$header = "Make,ComputerName,Model,Windows Version"
Comments