Сведения о разделах данных

Краткое описание

Описание разделов данных, которые изолируют текстовые строки и другие данные, доступные только для чтения, из логики скрипта.

Полное описание

Скрипты, разработанные для PowerShell, могут содержать один или несколько разделов данных, содержащих только данные. Вы можете включить один или несколько разделов Данных в любой скрипт, функцию или расширенную функцию. Содержимое раздела Данные ограничено указанным подмножеством языка сценариев PowerShell.

Отделение данных от логики кода упрощает идентификацию и управление логикой и данными. Он позволяет иметь отдельные файлы строковых ресурсов для текста, такие как сообщения об ошибках и строки справки. Он также изолирует логику кода, которая упрощает тесты безопасности и проверки.

В PowerShell раздел Данные используется для поддержки интернационализации скриптов. Разделы данных можно использовать, чтобы упростить изоляцию, поиск и обработку строк, которые будут переведены на многие языки пользовательского интерфейса.

Раздел Данные — это компонент PowerShell 2.0. Скрипты с разделами data не будут выполняться в PowerShell 1.0 без редакции.

Синтаксис

Синтаксис раздела Data выглядит следующим образом:

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

Требуется ключевое слово данных. Не учитывает регистр. Разрешенное содержимое ограничено следующими элементами:

  • Все операторы PowerShell, кроме -match

  • IfОператоры , Elseи ElseIf

  • Следующие автоматические переменные: $PsCulture, $PsUICulture, $True, $Falseи $Null

  • Комментарии

  • Pipelines

  • операторы, разделенные точкой с запятой (;);

  • Литералы, например:

    a
    1
    1,2,3
    "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 позволяет указать, что командлет или функция создает только данные. Он позволяет пользователям включать командлеты и функции в раздел данных, написанный или протестированный ими.

Значение -SupportedCommand — это разделенный запятыми список с одним или несколькими именами командлетов или функций.

Например, следующий раздел данных содержит написанный пользователем командлет , Format-XMLкоторый форматирует данные в XML-файле:

DATA -supportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

Использование раздела данных

Чтобы использовать содержимое раздела Data, назначьте его переменной и используйте нотацию переменных для доступа к содержимому.

Например, следующий раздел данных содержит ConvertFrom-StringData команду, которая преобразует строку here в хэш-таблицу. Хэш-таблица назначается переменной $TextMsgs .

Переменная $TextMsgs не является частью раздела данных.

$TextMsgs = DATA {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

Для доступа к ключам и значениям в хэш-таблице в $TextMsgsиспользуйте следующие команды.

$TextMsgs.Text001
$TextMsgs.Text002

Кроме того, можно поместить имя переменной в определение раздела Данные. Пример:

DATA TextMsgs {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

$TextMsgs

Результат будет таким же, как в предыдущем примере.

Name                           Value
----                           -----
Text001                        Windows 7
Text002                        Windows Server 2008 R2

Примеры

Простые строки данных.

DATA {
    "Thank you for using my PowerShell Organize.pst script."
    "It is provided free of charge to the community."
    "I appreciate your comments and feedback."
}

Строки, включающие разрешенные переменные.

DATA {
    if ($null) {
        "To get help for this cmdlet, type get-help new-dictionary."
    }
}

Строка here- с одним кавычками, использующая ConvertFrom-StringData командлет :

DATA {
    ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

Строка с двойными кавычками, использующая ConvertFrom-StringData командлет :

DATA  {
    ConvertFrom-StringData -stringdata @"
Msg1 = To start, press any key.
Msg2 = To exit, type "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