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