about_Data_Sections
Краткое описание
Объясняет разделы данных, которые изолируют текстовые строки и другие данные, доступные только для чтения, из логики скрипта.
Подробное описание
Скрипты, предназначенные для PowerShell, могут содержать один или несколько разделов данных, содержащих только данные. Вы можете включить один или несколько разделов данных в любой скрипт, функцию или расширенную функцию. Содержимое раздела данных ограничено указанным подмножеством языка сценариев PowerShell.
Разделение данных от логики кода упрощает идентификацию и управление ими логикой и данными. Он позволяет использовать отдельные файлы ресурсов строки для текста, такие как сообщения об ошибках и строки справки. Он также изолирует логику кода, которая упрощает проверки безопасности и проверки.
В PowerShell раздел данных используется для поддержки интернационализации скриптов. Разделы данных можно использовать для упрощения изоляции, поиска и обработки строк, которые будут переведены на многие языки пользовательского интерфейса.
Раздел "Данные" — это функция PowerShell 2.0. Скрипты с разделами данных не будут выполняться в PowerShell 1.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> '@
Командлеты, разрешенные в разделе "Данные". По умолчанию разрешен только
ConvertFrom-StringData
командлет.Командлеты, которые можно разрешить в разделе данных с помощью
-SupportedCommand
параметра.
При использовании ConvertFrom-StringData
командлета в разделе "Данные" можно заключать пары "ключ-значение" в одинарные или двойные кавычки или в одно кавычки или в двойные кавычки здесь-строки. Однако строки, содержащие переменные и вложенные выражения, должны быть заключены в строки с одним кавычками или в одинарные строки здесь, чтобы переменные не были развернуты, а вложенные выражения не являются исполняемыми.
-SupportedCommand
Параметр -SupportedCommand
позволяет указать, что командлет или функция создает только данные. Он предназначен для включения командлетов и функций в раздел данных, написанный или протестированный пользователями.
Значением -SupportedCommand
является разделенный запятыми список одного или нескольких имен командлетов или функций.
Например, следующий раздел данных содержит командлет, написанный пользователем, Format-Xml
который форматирует данные в XML-файле:
DATA -supportedCommand Format-Xml
{
Format-Xml -Strings string1, string2, string3
}
Использование раздела данных
Чтобы использовать содержимое раздела данных, назначьте его переменной и используйте нотацию переменной для доступа к содержимому.
Например, следующий раздел данных содержит ConvertFrom-StringData
команду, которая преобразует здесь строку в хэш-таблицу. Хэш-таблица назначается переменной $TextMsgs
.
Переменная $TextMsgs
не входит в раздел данных.
$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