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