
- •Введение
- •Часть 1: Четыре командлета - ключи, открывающие PowerShell
- •Ключ #1: Get-Command
- •Ключ #2: Get-Help
- •Ключ #3: Get-Member
- •Ключ #4: Get-PSDrive
- •Дополнение для PowerShell 2.0
- •Часть 2: Понимание вывода объектов
- •Вывод - это всегда объект .NET
- •Функция возвращает все, что не попало в поток вывода
- •Другие типы вывода, которые не могут быть захвачены
- •Часть 3: Как объекты передаются по конвейеру
- •Часть 4: Разнообразие вывода - скаляры, коллекции и пустые наборы - о, боже!
- •Скаляры
- •Работа с коллекциями
- •Работа с пустыми наборами
- •Часть 5: Используй объекты, Люк. Используй объекты!
- •Часть 6: Как форматируется вывод
- •Часть 7: Режимы синтаксического разбора PowerShell
- •Часть 8: Параметры привязки элементов конвейера ByPropertyName (по имени)
- •Часть 9: Параметры привязки элементов конвейера ByValue (по значению)
- •Часть 10: Регулярные выражения – один из мощнейших инструментов PowerShell
- •Дополнение для PowerShell 2.0
- •Часть 11: Сравнение массивов
- •Часть 12: Старайтесь использовать Set-PSDebug -Strict в своих сценариях
- •Примечание для PowerShell 2.0
- •Часть 13: Комментирование строк в файле сценария
- •Дополнение для PowerShell 2.0
- •Дополнительные материалы

Часть 13: Комментирование строк в файле сценария
Windows PowerShell 1.0 не позволяет комментировать несколько строк. В версии 2.0 этот недостаток устранён, но я расскажу об этом в конце этого раздела. Если вы используете исключительно PowerShell 2.0, я бы всё равно рекомендовал ознакомиться с этим разделом, потому что в нём описаны некоторые особенности использования многострочных текстовых переменных (here-string). Многострочные комментарии полезны, когда необходимо закомментировать сразу несколько строк в сценарии. Существует и другой допустимый приём - использование многострочных текстовых переменных. Они позволяет ввести несколько строк кода, предотвращая их немедленную интерпретацию. Однако то, как будет расценивать содержимое строки интерпретатор PowerShell, зависит от типа используемой строки. Например, в двойных кавычках переменные будут заменены их значениями, а выражения - выполняться. Пример строки с двойными кавычками, в которой выполнено выражение :
PS> @"
>>$(get-process)
>>"@
>>
System.Diagnostics.Process (audiodg) System.Diagnostics.Process (csrss)
…
А в строке с одинарными кавычками такого не произойдёт:
PS> @'
>>$(get-process)
>>'@
>>
$(get-process)
Используйте многострочный текст с одинарными кавычками для комментирования строк сценария, так как в них никакие выражения не выполняются. Необходимо лишь помнить, что строка - это выражение, и если больше ничего не делать, её содержимое будет выведено в консоль. Обычно бывает нежелательно отображать закомментированные строки на экране. Чтобы избежать вывода этой информации, можно привести строку к типу [void] или перенаправить её в $null:
[void]@'
"Получаем информацию о процессах" get-process | select Name, Id "Останавливаем процессы с именем vd*" stop-process -name vd*
'@
Это позволяет эффективно комментировать строки скрипта. У этого метода существует несколько особенностей. После начальных символов последовательности @' не должно быть пробелов. Если после этой последовательности будет стоять хотя бы один пробел, вы получите вот такую загадочную ошибку:
Unrecognized token in source text. At C:\Temp\foo.ps1:1 char:1
+ @ <<<< '
55