主题 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