Можно ли использовать комментарии в многострочных командах Powershell? - PullRequest
0 голосов
/ 02 января 2019

Отладка и тестирование многострочных команд в Powershell ISE беспокоило меня годами. Мне нравится иметь команды с несколькими строками, потому что их легко читать, но они усложняют отладку. В качестве примера я использую следующую команду для получения папок старше $days (что, кстати, работает).

$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 `
    | Where CreationTime -gt (Get-Date).AddDays(-1 * $days) `
    | Sort-Object -Property LastWriteTime

Я бы хотел изменить AddDays на AddMinutes для проверки разных наборов результатов, но я хочу оставить исходную строку, чтобы можно было легко переключаться назад и вперед. Ниже я скопировал строку, которую хочу сохранить, и закомментировал ее, а на новой строке изменил AddDays на AddMinutes. Добавление # нарушает многострочную функцию. Есть ли простой способ обойти это, мне не нужно вырезать мою скопированную строку и переместить ее «из» команды? Или есть способ разбить / разложить команду на несколько строк и из них?

$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 `
#    | Where CreationTime -gt (Get-Date).AddDays(-1 * $days) `
    | Where CreationTime -gt (Get-Date).AddMinutes(-1 * $days) `
    | Sort-Object -Property LastWriteTime

(выше не работает из-за закомментированной строки)

Ответы [ 4 ]

0 голосов
/ 02 января 2019

Так как powershell ожидает продолжения после | или ,
в качестве последнего символа в строке, вам не нужен обратный тик и
, который вы можете отформатировать по-другому, тогда однострочный комментарий вболее длинная труба все еще работает:

$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 |
#   Where CreationTime -gt (Get-Date).AddDays(-1 * $days) |
    Where CreationTime -gt (Get-Date).AddMinutes(-1 * $minutes) |
    Sort-Object -Property LastWriteTime
0 голосов
/ 02 января 2019

Попробуйте это, что может быть включено как пример многострочного комментария

$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 `
<#    | Where CreationTime -gt (Get-Date).AddDays(-1 * $days) #> ` | Where CreationTime -gt (Get-Date).AddMinutes(-1 * $days) `
    | Sort-Object -Property LastWriteTime
0 голосов
/ 02 января 2019

ваша проблема в [неприятных, неприятных] галках. [ ухмылка ] powershell знает, есть еще что-то после канала ... поэтому нет необходимости добавлять обратную галочку, если вы помещаете канал в конец сегмента, который находится конвейер. как это ...

$dirs = Get-ChildItem $targetDir -Directory -exclude *.ps1 |
    # Where CreationTime -gt (Get-Date).AddDays(-1 * $days) |
    Where CreationTime -gt (Get-Date).AddMinutes(-1 * $days) |
    Sort-Object -Property LastWriteTime
0 голосов
/ 02 января 2019

Используйте синтаксис многострочного комментария вместо #.

<# comment #> 

Это должно позволить вам комментировать текст в многострочной команде.

Однако это работает, только если вы используете Powershell 2.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...