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




目录