主題
    about_Data_Sections

簡短描述
    說明 Data 區段,該區段會將文字字串和其他唯讀的資料與指令碼邏輯隔離。


完整描述
    針對 Windows PowerShell 所設計的指令碼可以具有一或多個只包含資料的 Data 區
    段。您可以在任何指令碼、函數或進階函數中包含一或多個 Data 區段。Data 區段的
    內容受限於 Windows PowerShell 指令碼語言的指定子集。

    將資料與程式碼邏輯區隔,可以輕鬆地識別出邏輯和資料並加以管理。這麼做可以讓您擁
    有文字的個別字串資源檔,例如錯誤訊息和說明字串等, 也可以隔離程式碼邏輯,對於安
    全性及驗證測試都很有幫助。

    在 Windows PowerShell 中,Data 區段會用來支援指令碼國際化。您可以使用 Data 
    區段,使隔離、尋找及處理轉譯為許多種使用者介面 (UI) 語言之字串的作業得以簡化。

    Data 區段是 Windows PowerShell 2.0 功能。具有 Data 區段的指令碼需要修改後
    才能在 Windows PowerShell 1.0 中執行。


  語法

     Data 區段的語法如下:

        DATA [-supportedCommand <cmdlet-名稱>] {

            <允許的內容>
        }


    Data 關鍵字為必要項, 且不區分大小寫。


    允許的內容限於下列元素:

        - 所有的 Windows PowerShell 運算子 (-match 除外) 	 
 
        - 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。

        - 在 Data 區段中藉由使用 SupportedCommand 參數而允許的 Cmdlet。


    在 Data 區段中使用 ConvertFrom-StringData Cmdlet 時,可以將機碼/值組放在
    單引號或雙引號字串或單引號或雙引號 here-string 中。不過,包含變數及子運算式
    的字串則必須放在單引號字串或單引號 here-string 中,這樣變數才不會展開,子運算
    式也不會執行。


  SupportedCommand

      SupportedCommand 參數可讓您指示 Cmdlet 或函數只會產生資料。這個參數是設
      計用來讓使用者在 Data 區段中加入已撰寫或測試的 Cmdlet 和函數。

      SupportedCommand 的值是以逗號分隔的一或多個 Cmdlet 或函數名稱的清單。

      例如,下列的資料區段包含使用者撰寫的 Cmdlet,Format-XML,該 Cmdlet 以 XML 
      檔案來進行資料的格式化:

	  DATA -supportedCommand Format-XML 
          {    
             Format-XML -strings string1, string2, string3
          }
       


  使用 Data 區段

      若要使用 Data 區段的內容,請將其指派給變數,然後使用變數表示法來存取內容。

      例如,下列資料區段包含 ConvertFrom-StringData 命令,該命令可將 
      here-string 轉換成雜湊表。雜湊表則會指派給 $TextMsgs 變數。

      $TextMsgs 變數並非資料區段的一部分。
 
           $TextMsgs = DATA {
              ConvertFrom-StringData -stringdata @'
                Text001 = Windows 7
                Text002 = Windows Server 2008 R2
          '@
          }
     
      若要存取 $TextMsgs 中的雜湊表的機碼和值,請使用下列命令。

          $TextMsgs.Text001   
          $TextMsgs.Text002



範例

    簡單的資料字串。

        DATA {
            "謝謝您使用我的 Windows PowerShell Organize.pst 指令碼。" 
            "凡此社群成員均可免費使用。" 
            "若有任何批評及建議,還請不吝賜教。"
        }


    包含所允許變數的字串。

        DATA {
            if ($null) {
	       "若要取得此 Cmdlet 的說明,請輸入 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




目錄