РАЗДЕЛ about_Quoting_Rules КРАТКОЕ ОПИСАНИЕ Описывает правила использования одиночных и двойных кавычек в Windows PowerShell. ПОЛНОЕ ОПИСАНИЕ Кавычки используются для задания литеральных строк. Строку можно заключить в одиночные (') или двойные (") кавычки. Кавычки также используются для создания автономных строк. Автономная строка - это строка, заключенная в одиночные или двойные кавычки, в которой кавычки интерпретируются буквально. Автономная строка может состоять из нескольких строк. Все строки в автономной строке интерпретируются как строки, даже несмотря на то что они не заключены в кавычки. В командах для удаленных компьютеров кавычки определяют части команды, выполняемые на удаленном компьютере. В удаленном сеансе кавычки также определяют, интерпретируются ли переменные в команде сначала на локальном, а затем на удаленном компьютере или наоборот. Строки, заключенные в одиночные и двойные кавычки Если строка заключена в двойные кавычки, имена переменных, перед которыми стоит знак доллара ($), заменяются значениями переменных перед передачей строки команде для обработки. Пример: $i = 5 "Значение $i: $i." Выходные данные команды: Значение 5: 5. Кроме того, в строке, заключенной в двойные кавычки, вычисляются выражения, и результат вставляется в строку. Пример: "Значение $(2+3): 5." Выходные данные команды: Значение 5: 5. Строка, заключенная в одиночные кавычки, передается команде точно в том виде, в котором она введена. Подстановок не производится. Пример: $i = 5 'Значение $i: $i.' Выходные данные команды: Значение $i: $i. Кроме того, выражения, заключенные в одиночные кавычки, не вычисляются. Они интерпретируются как литералы. Пример: 'Значение $(2+3): 5.' Выходные данные команды: Значение $(2+3): 5. Для предотвращения подстановки значения переменной в строке, заключенной в двойные кавычки, используйте обратный апостроф (`)[код ASCII 96], который является escape-символом Windows PowerShell. В следующем примере перед первым вхождением переменной $i указан обратный апостроф (`), в результате чего Windows PowerShell не заменяет имя переменной ее значением. Пример: $i = 5 "Значение `$i: $i." Выходные данные команды: Значение $i: 5. Для отображения двойных кавычек в строке необходимо заключить всю строку в одиночные кавычки. Пример: 'Как говорится, "учись, пока жив".' Выходные данные команды: Как говорится, "учись, пока жив". Также можно заключить строку, содержащую одиночные кавычки, в двойные кавычки. Пример: "Как говорится, 'учись, пока жив'." Выходные данные команды: Как говорится, 'учись, пока жив'. Кроме того, можно заключить строку, содержащую двойные кавычки, в двойные кавычки. Пример: "Как говорится, ""учись, пока жив""." Выходные данные команды: Как говорится, "учись, пока жив". Для включения одиночной кавычки в строку, заключенную в одиночные кавычки, используйте одиночную кавычку два раза подряд. Пример: 'don''t' Выходные данные команды: don't Чтобы оболочка Windows PowerShell интерпретировала двойные кавычки буквально, используйте обратный апостроф. Это не позволяет оболочке Windows PowerShell интерпретировать кавычку как разделитель строк. Пример: "Используйте двойную кавычку (`") в начале строки." Поскольку содержимое строки, заключенной в одиночные кавычки, интерпретируется буквально, в ней нельзя использовать обратный апостроф для принудительной интерпретации литерала. Например, следующая команда выдает ошибку, поскольку Windows PowerShell не распознает escape-символ. Эта команда интерпретирует вторую кавычку как конец строки. PS C:\> 'Используйте одиночную кавычку (`') в начале строки.' Неожиданный токен ")" в выражении или инструкции. В строке:1 знак:27 + 'Используйте одиночную кавычку (`') <<<< в начале строки.' Автономные строки, заключенные в одиночные и двойные кавычки Правила использования кавычек в автономных строках немного отличаются. Автономная строка - это строка, заключенная в одиночные или двойные кавычки, в которой кавычки интерпретируются буквально. Автономная строка может состоять из нескольких строк. Все строки в автономной строке интерпретируются как строки, даже несмотря на то что они не заключены в кавычки. В автономных строках, заключенных в двойные кавычки, переменные заменяются своими значениями подобно регулярным выражениям. В автономных строках, заключенных в одиночные кавычки, переменные не заменяются своими значениями. Автономные строки можно использовать в случае любого текста, но они являются особенно полезными в случае текста следующих типов. - Текст, в котором содержатся литералы в кавычках Текст, - состоящий из нескольких строк, например HTML- или XML-документ - Текст справки для скрипта или функции Автономная строка может иметь один из следующих форматов, где <Ввод> означает перевод строки или скрытый символ новой строки, который добавляется при нажатии клавиши ВВОД. Формат 1: @"<Ввод> <строка> [строка] ...<Ввод> "@ Формат 2: @'<Ввод> <строка> [строка] ...<Ввод> '@ В обоих форматах закрывающая кавычка должна быть первым символом строки. В автономной строке содержится весь текст между двумя скрытыми символами. В автономной строке все кавычки интерпретируются буквально. Пример: @" Для отображения справки введите команду "get-help" "@ Выходные данные команды: Для отображения справки введите команду "get-help" Применение автономной строки позволяет упростить используемую в команде строку. Пример: @" Используйте одиночную кавычку (') в начале строки. "@ Выходные данные команды: Используйте одиночную кавычку (') в начале строки. В автономных строках, заключенных в одиночные кавычки, переменные интерпретируются буквально и воспроизводятся точно в том виде, в котором они заданы. Пример: @' В переменной $profile содержится путь к вашему профилю Windows PowerShell. '@ Выходные данные команды: В переменной $profile содержится путь к вашему профилю Windows PowerShell. В автономных строках, заключенных в двойные кавычки, переменные заменяются своими значениями. Пример: @" Даже если профиль не создан, задан следующий путь к профилю: $profile. "@ Выходные данные команды: Даже если профиль не создан, задан следующий путь к профилю: C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1. Автономные строки обычно используются для присвоения переменной значения, состоящего из нескольких строк. Например, следующая автономная строка позволяет присвоить переменной $page страницу XML-документа. $page = [XML] @" <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10"> <command:details> <command:name> Format-Table </command:name> <maml:description> <maml:para>Форматирует вывод в виде таблицы.</maml:para> </maml:description> <command:verb>format</command:verb> <command:noun>table</command:noun> <dev:version></dev:version> </command:details> ... </command:command> "@ Автономные строки также являются удобным форматом входных данных для командлета ConvertFrom-StringData, который преобразует автономные строки в хэш-таблицы. Дополнительные сведения см. в описании командлета ConvertFrom-StringData. СМ. ТАКЖЕ about_Escape_Characters ConvertFrom-StringData