次の方法で共有


about_Data_Sections

簡単な説明

テキスト文字列やその他の読み取り専用データをスクリプト ロジックから分離するデータ セクションについて説明します。

長い説明

PowerShell 用に設計されたスクリプトには、データのみを含む 1 つ以上のデータ セクションを含めることができます。 スクリプト、関数、または高度な関数には、1 つ以上のデータ セクションを含めることができます。 [データ] セクションの内容は、PowerShell スクリプト言語の指定されたサブセットに制限されます。

コード ロジックからデータを分離すると、ロジックとデータの両方を簡単に識別および管理できます。 これにより、エラー メッセージやヘルプ文字列など、テキスト用の個別の文字列リソース ファイルを作成できます。 また、コード ロジックを分離し、セキュリティと検証のテストを容易にします。

PowerShell では、 [データ] セクションを使用して、スクリプトの国際化をサポートします。 データ セクションを使用すると、多くのユーザー インターフェイス (UI) 言語に変換される文字列を簡単に分離、検索、および処理できます。

[データ] セクションは PowerShell 2.0 機能です。 データ セクションを含むスクリプトは、リビジョンなしで PowerShell 1.0 では実行されません。

構文

Data セクションの構文は次のとおりです。

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

データ キーワード (keyword)が必要です。 大文字と小文字は区別されません。 許可されるコンテンツは、次の要素に制限されます。

  • すべての PowerShell 演算子 (を除く) -match

  • IfElseElseIf ステートメント

  • 次の自動変数: $PsCulture、、 $PsUICulture$True$Falseおよび $Null

  • コメント

  • Pipelines

  • セミコロン (;) で区切られたステートメント

  • 次のようなリテラル:

    a
    1
    1,2,3
    "PowerShell 2.0"
    @( "red", "green", "blue" )
    @{ a = 0x1; b = "great"; c ="script" }
    [XML] @'
    <p> Hello, World </p>
    '@
    
  • [データ] セクションで許可されるコマンドレット。 既定では、 コマンドレットのみが ConvertFrom-StringData 許可されます。

  • パラメーターを使用して Data セクションで許可する -SupportedCommand コマンドレット。

Data セクションで コマンドレットを ConvertFrom-StringData 使用する場合は、キーと値のペアを単一引用符または二重引用符で囲んだ文字列で囲んだり、単一引用符または二重引用符で囲んだここの文字列で囲んだりできます。 ただし、変数と部分式を含む文字列は、変数が展開されず、部分式が実行可能でないように、単一引用符で囲まれた文字列または単一引用符で囲む必要があります。

-SupportedCommand

-SupportedCommandパラメーターを使用すると、コマンドレットまたは関数がデータのみを生成することを示すことができます。 これは、ユーザーが作成またはテストしたデータ セクションにコマンドレットと関数を含めることができるように設計されています。

-SupportedCommand 値は、1 つ以上のコマンドレット名または関数名のコンマ区切りのリストです。

たとえば、次のデータ セクションには、 Format-XmlXML ファイル内のデータを書式設定するユーザー記述コマンドレット が含まれています。

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

データ セクションの使用

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 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 する単一引用符で囲まれた here-string:

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

コマンドレットを使用 ConvertFrom-StringData する二重引用符で囲まれた here-string:

DATA  {
    ConvertFrom-StringData -stringdata @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}

データを生成するユーザー作成コマンドレットを含むデータ セクション。

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

こちらもご覧ください