about_Data_Sections
Краткое описание
Объясняет data
разделы, которые изолируют текстовые строки и другие данные, доступные только для чтения, из логики скрипта.
Подробное описание
Скрипты, предназначенные для PowerShell, могут содержать один или несколько разделов data
, содержащих только данные. Вы можете включить один или несколько разделов data
в любой скрипт, функцию или расширенную функцию. Содержимое раздела data
ограничено указанным подмножеством языка сценариев PowerShell.
Разделение данных от логики кода упрощает идентификацию и управление ими логикой и данными. Он позволяет использовать отдельные файлы ресурсов строки для текста, такие как сообщения об ошибках и строки справки. Он также изолирует логику кода, которая упрощает проверки безопасности и проверки.
В PowerShell можно использовать раздел data
для поддержки интернационализации скриптов. Вы можете использовать разделы data
, чтобы упростить изоляцию, поиск и обработку строк, которые можно преобразовать на другие языки.
Раздел data
добавлен в компонент PowerShell 2.0.
Синтаксис
Синтаксис раздела data
выглядит следующим образом:
data [<variable-name>] [-SupportedCommand <cmdlet-name>] {
<Permitted content>
}
Требуется ключевое слово data
. Это не зависит от регистра. Разрешенное содержимое ограничено следующими элементами:
Все операторы 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
пары «ключ-значение» можно заключать в строки в одинарных или двойных кавычках, а также в here-строки в одинарных или двойных кавычках. Однако строки, содержащие переменные и вложенные выражения, должны быть заключены в строки с одним кавычками или в одинарные строковые строки, чтобы переменные не были развернуты, а вложенные выражения не являются исполняемыми.
-SupportedCommand
Параметр SupportedCommand позволяет указать, что командлет или функция создает только данные. Он разработан для того, чтобы пользователи могли включать в раздел data
командлеты и функции, которые они написали или протестировали.
Значение SupportedCommand — это разделенный запятыми список одного или нескольких имен командлетов или функций.
Например, следующий раздел data
включает в себя командлет, написанный пользователем, Format-Xml
, который форматирует данные в XML-файле:
data -SupportedCommand Format-Xml
{
Format-Xml -Strings string1, string2, string3
}
Использование раздела data
Чтобы использовать содержимое раздела data
, назначьте его переменной и используйте нотацию переменной для доступа к содержимому.
Например, следующий раздел data
содержит команду ConvertFrom-StringData
, которая преобразует здесь строку в хэш-таблицу. Хэш-таблица назначается переменной $TextMsgs
.
Переменная $TextMsgs
не входит в раздел data
.
$TextMsgs = data {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
Чтобы получить доступ к ключам и значениям в хэш-таблице $TextMsgs
, используйте следующие команды.
$TextMsgs.Text001
$TextMsgs.Text002
Кроме того, можно поместить имя переменной в определение раздела data
. Например:
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."
}
}
Одна кавычка здесь- строка, использующая 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
}
См. также
PowerShell