about_Data_Sections
主题
about_Data_Sections
简短说明
说明 Data 节,这些节将文本字符串和其他只读数据与脚本逻辑隔离。
详细说明
用于 Windows PowerShell 的脚本可具有仅包含数据的一个或多个 Data 节。可将一个或多个
Data 节包含在任何脚本、函数或高级函数中。Data 节的内容限制为 Windows PowerShell 脚本
语言的指定子集。
数据与代码逻辑的分离使标识和管理逻辑和数据更加容易。这样可以为错误消息和 Help 字符串等文本
提供单独的字符串资源文件。另外,还可将代码逻辑进行隔离,从而便于进行安全与验证测试。
在 Windows PowerShell 中,Data 节用于支持脚本国际化。使用 Data 节,可更加方便地隔离、
定位和处理将转换为众多用户界面 (UI) 语言的字符串。
Data 节是 Windows PowerShell 2.0 的功能。含有 Data 节的脚本不经修改将无法在
Windows PowerShell 1.0 中运行。
语法
Data 节的语法如下:
DATA [-supportedCommand <cmdlet-name>] {
<Permitted content>
}
Data 关键字是必需的。它不区分大小写。
Permitted content 限于以下元素:
- 除 -match 外的所有 Windows PowerShell 运算符
- 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 节中允许的 Cmdlet。默认情况下只允许 ConvertFrom-StringData cmdlet。
- 通过 SupportedCommand 参数而允许在 Data 节中使用的 Cmdlet。
在 Data 节中使用 ConvertFrom-StringData cmdlet 时,可将键-值对放入用单引号或双引号
括起的字符串中,或放入用单引号或双引号括起的 here-string 中。但是,必须将含有变量和子表达
式的字符串放入用单引号括起的字符串或用单引号括起的 here-string 中,从而避免展开变量和执行
子表达式。
SupportedCommand
可使用 SupportedCommand 参数来指示一个 cmdlet 或函数仅生成数据。用户可使用该参数将
cmdlet 和函数包括在他们已编写或测试的一个数据节中。
SupportedCommand 的值是一个或多个 cmdlet 或函数名的逗号分隔列表。
例如,以下数据节包含一个用户编写的 cmdlet (Format-XML),该 cmdlet 设置 XML 文件中的
数据格式:
DATA -supportedCommand Format-XML
{
Format-XML -strings string1, string2, string3
}
使用 Data 节
若要使用 Data 节的内容,请将该 Data 节赋给一个变量,然后使用变量表示法访问其内容。
例如,以下数据节中包含一个用于将 here-string 转换为哈希表的 ConvertFrom-
StringData 命令。该哈希表将赋给 $TextMsgs 变量。
$TextMsgs 变量不是数据节的一部分。
$TextMsgs = DATA {
ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
若要访问 $TextMsgs 中哈希表中的键和值,请使用以下命令。
$TextMsgs.Text001
$TextMsgs.Text002
示例
简单数据字符串。
DATA {
"Thank you for using my Windows 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 cmdlet 的用单引号括起的 here-string:
DATA {
ConvertFrom-StringData -stringdata @' Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
使用了 ConvertFrom-StringData cmdlet 的用双引号括起的 here-string:
DATA {
ConvertFrom-StringData -stringdata @" Msg1 = To start,
press any key.
Msg2 = To exit, type "quit".
"@
}
包含用户编写用于生成数据的 cmdlet 的数据节:
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