共用方式為


about_Data_Sections

簡短描述

說明 DATA 區段,這些區段會隔離文字字串和其他只讀數據與腳本邏輯。

詳細描述

專為 PowerShell 設計的腳本可以有一或多個只包含數據的 DATA 區段。 您可以在任何文稿、函式或進階函式中包含一或多個 DATA 區段。 DATA 區段的內容僅限於PowerShell腳本語言的指定子集。

將數據與程式代碼邏輯分開,可讓您更輕鬆地識別和管理邏輯和數據。 它可讓您針對文字有個別的字串資源檔,例如錯誤訊息和說明字串。 它也會隔離程式代碼邏輯,以利安全性和驗證測試。

在 PowerShell 中,您可以使用 [DATA] 區段來支援腳本國際化。 您可以使用 DATA 區段,更輕鬆地隔離、尋找及處理可轉譯成其他語言的字串。

PowerShell 2.0 功能已新增 DATA 區段。

語法

DATA 區段的語法如下所示:

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

需要 DATA 關鍵字。 不區分大小寫。 允許的內容僅限於下列元素:

  • 所有 PowerShell 運算子,但除外 -match

  • IfElseElseIf 陳述式

  • 下列自動變數:$PsCulture、、、$PsUICulture$True$False$Null

  • 註解

  • 管線

  • 以分號分隔的語句 (;

  • 常值,例如:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • DATA 區段中允許的 Cmdlet。 根據預設,只允許 Cmdlet ConvertFrom-StringData

  • 您在 DATA 區段中允許的 Cmdlet 是透過使用 -SupportedCommand 參數來設定的。

當您在 DATA 區段中使用 ConvertFrom-StringData Cmdlet 時,可以將索引鍵/值組括在單引號或雙引號字串串中,或是以單引號或雙引號括住 here-strings。 不過,包含變數和子表達式的字串必須以單引號字串或在單引號的 here-strings 中括住,這樣變數不會展開,而且子表達式無法執行。

-SupportedCommand

SupportedCommand 參數可讓您指出 Cmdlet 或函式只產生數據。 其設計目的是允許使用者在已撰寫或測試的 DATA 區段中包含 Cmdlet 和函式。

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

例如,下列 DATA 區段包含使用者撰寫的 Cmdlet Format-Xml,可格式化 XML 檔案中的數據:

DATA -supportedCommand Format-Xml
{
    Format-Xml -Strings string1, string2, string3
}

使用 DATA 區段

若要使用 DATA 區段的內容,請將它指派給變數,並使用變數表示法來存取內容。

例如,下列 DATA 區段包含將 here-string 轉換成哈希表的 ConvertFrom-StringData 命令。 哈希表會指派給 $TextMsgs 變數。

$TextMsgs 變數不是 DATA 區段的一部分。

$TextMsgs = DATA {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

若要存取 中 $TextMsgs哈希表中的索引鍵和值,請使用下列命令。

$TextMsgs.Text001
$TextMsgs.Text002

或者,您可以將變數名稱放在 DATA 區段的定義中。 例如:

DATA TextMsgs {
    ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

$TextMsgs

結果與上一個範例相同。

Name                           Value
----                           -----
Text001                        Windows 7
Text002                        Windows Server 2008 R2

範例

簡單數據字串。

DATA {
    "Thank you for using my 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 字串:

DATA {
    ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}

使用 ConvertFrom-StringData Cmdlet 的雙引號 here 字串:

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
}

另請參閱