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-strings. Однако строки, содержащие переменные и вложенные выражения, должны быть заключены в строки с одним кавычками или в одинарные строковые строки, чтобы переменные не были развернуты, а вложенные выражения не являются исполняемыми.
-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