РАЗДЕЛ about_Data_Sections КРАТКОЕ ОПИСАНИЕ Описывает разделы Data, позволяющие отделить текстовые строки и другие данные, предназначенные только для чтения, от логики скрипта. ПОЛНОЕ ОПИСАНИЕ Скрипты, предназначенные для Windows PowerShell, могут содержать один или несколько разделов Data, в которых хранятся только данные. Один или несколько разделов Data можно добавить в любой скрипт, функцию или расширенную функцию. Содержимое раздела Data ограничено определенным поднабором языка скриптов Windows PowerShell. Отделение данных от логики кода упрощает идентификацию и управление как логикой, так и данными. Это разделение позволяет создавать отдельные файлы строковых ресурсов для вывода текстовых сообщений, например сообщений об ошибках и строк справки. Кроме того, такой подход позволяет выделить логику кода, что упрощает обеспечение безопасности и проведение тестирования. Раздел Data используется в Windows PowerShell 2.0 для поддержки перевода скрипта на различные языки. Разделы Data можно использовать для упрощения отделения, обнаружения и обработки строк, которые будут переведены на различные языки пользовательского интерфейса. Раздел Data является функцией Windows PowerShell 2.0. Скрипты с разделами Data не будут работать в Windows PowerShell 1.0, если не внести в них изменения. Синтаксис Для раздела Data используется следующий синтаксис: DATA [-supportedCommand <имя_командлета>] { <Разрешенное_содержимое> } Ключевое слово Data является обязательным. Регистр символов не имеет значения. Разрешенное содержимое ограничивается следующими элементами. - Все операторы Windows PowerShell, за исключением -match - Инструкции If, Else и ElseIf - Следующие автоматические переменные: $PSCulture, $PSUICulture, $True, $False и $Null. - Комментарии - Конвейеры - Инструкции разделяются точкой с запятой (;). - Литералы, например следующие: a 1 1,2,3 "Windows PowerShell 2.0" @( "red", "green", "blue" ) @{ a = 0x1; b = "great"; c ="script" } [XML] @' <p> Hello, World </p> '@ - Командлеты, которые могут использоваться в разделе Data. По умолчанию допускается использование только командлета ConvertFrom-StringData. - Командлеты, которые пользователь разрешил использовать в разделе Data с использованием параметра SupportedCommand. Если командлет ConvertFrom-StringData используется в разделе Data, можно заключать пары "ключ-значение" в строки или автономные строки в одиночных или двойных кавычках. Однако строки, содержащие переменные и подвыражения, должны заключаться в строки или автономные строки в одиночных кавычках, чтобы вместо переменных не подставлялись значения, а подвыражения не могли выполняться. SupportedCommand Параметр SupportedCommand позволяет указать, что командлет или функция только создает данные. Этот параметр позволяет пользователям включать в раздел Data командлеты и функции, написанные или протестированные пользователями. В качестве значения параметра SupportedCommand используется разделенный запятыми список имен командлетов и функций. Например, в следующий раздел данных включен написанный пользователем командлет, Format-XML, который форматирует данные в XML-файле. DATA -supportedCommand Format-XML { Format-XML -strings string1, string2, string3 } Использование раздела Data Для использования содержимого раздела Data присвойте его переменной и выполняйте доступ к содержимому с помощью синтаксиса работы с переменными. Например, в следующем разделе данных содержится команда ConvertFrom- StringData, которая конвертирует автономную строку в хэш-таблицу. Хэш-таблица сохраняется в переменной $TextMsgs. Переменная $TextMsgs не является частью раздела данных. $TextMsgs = DATA { ConvertFrom-StringData -stringdata @' Text001 = Windows 7 Text002 = Windows Server 2008 R2 '@ } Для доступа к ключам и значениям в хэш-таблице, сохраненной в переменной $TextMsgs, используются следующие команды. $TextMsgs.Text001 $TextMsgs.Text002 ПРИМЕРЫ Простые строки данных. DATA { "Благодарю вас за использование моего скрипта Windows PowerShell Organize.pst." "Он бесплатно предоставляется всем желающим." "Буду благодарен за отзывы и комментарии." } Строки, содержащие разрешенные переменные.. DATA { if ($null) { "Для отображения справки для этого командлета введите команду get- help new-dictionary." } } Автономная строка в одиночных кавычках, которая использует командлет ConvertFrom-StringData: DATA { ConvertFrom-StringData -stringdata @' Text001 = Windows 7 Text002 = Windows Server 2008 R2 '@ } Автономная строка в двойных кавычках, которая использует командлет ConvertFrom-StringData: DATA { ConvertFrom-StringData -stringdata @" Msg1 = Для запуска нажмите любую клавишу. Msg2 = Для завершения работы введите "quit". "@ } Раздел данных, содержащий написанный пользователем командлет, который генерирует данные. DATA -supportedCommand Format-XML { Format-XML -strings string1, string2, string3 } СМ. ТАКЖЕ about_Automatic_Variables about_Comparison_Operators about_Hash_Tables about_If about_Operators about_Quoting_Rules about_Script_Internationalization ConvertFrom-StringData Import-LocalizedData