about_Data_Sections
トピック
about_Data_Sections
簡易説明
テキスト文字列と読み取り専用データをスクリプト ロジックから分離する Data セクションについて
説明します。
詳細説明
Windows PowerShell 用に設計されたスクリプトには、データのみが含まれた 1 つまたは複数の
Data セクションを指定することができます。1 つのスクリプト、関数、または高度な関数に、1 つま
たは複数の Data セクションを含めることができます。Data セクションのコンテンツは、Windows
PowerShell スクリプト言語の指定されたサブセットに制限されます。
データをコード ロジックから分離すると、ロジックとデータ両方の識別および管理がより容易になり
ます。これによって、エラー メッセージおよびヘルプ文字列などのテキスト用に、個別の文字列リソ
ース ファイルを用意することが可能になります。また、コード ロジックが分離されることで、セキュ
リティ テストおよび有効性テストも容易になります。
Windows PowerShell では、Data セクションはスクリプトの国際化対応のサポートに使用されます。
Data セクションを使用して、多くのユーザー インターフェイス (UI) 言語に翻訳される文字列の分
離、検索、および処理をより容易にすることができます。
Data セクションは、Windows PowerShell 2.0 の機能です。Data セクションがあるスクリプトは、
Windows PowerShell 1.0 (リビジョンなし) では実行できません。
構文
Data セクションの構文は次のとおりです。
DATA [-supportedCommand <cmdlet-name>] {
<Permitted content>
}
Data キーワードは必須です。大文字と小文字は区別されません。
許可されるコンテンツは次の要素に制限されます。
- -match 以外のすべての Windows PowerShell 演算子
- 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 セクションで許可されるコマンドレット。既定では、ConvertFrom-StringData コ
マンドレットのみ許可されています。
- SupportedCommand パラメーターを使用することによって、Data セクションで許可されるコマ
ンドレット。
Data セクションで ConvertFrom-StringData コマンドレットを使用すると、キー/値のペアを、
単一引用符または二重引用符で囲まれた文字列か、単一引用符または二重引用符で囲まれた here-string
で囲むことができます。ただし、変数およびサブ式を格納している文字列は、変数が展開されたり、サブ
式が実行可能になったりしないように、単一引用符で囲まれた文字列または単一引用符で囲まれた
here-string で囲む必要があります。
SupportedCommand
SupportedCommand パラメーターを使用すると、コマンドレットまたは関数からデータのみが生
成されるように指定できます。つまりユーザーは、記述またはテストしたコマンドレットおよび関数
を Data セクションに含めることができます。
SupportedCommand の値は、1 つまたは複数のコマンドレット名または関数名のコンマ区切りリス
トです。
たとえば、次に示す Data セクションには、ユーザー記述の Format-XML というコマンドレット
が含まれています。このコマンドレットは、データを XML ファイルとして書式化するものです。
DATA -supportedCommand Format-XML
{
Format-XML -strings string1, string2, string3
}
Data セクションの使用
Data セクションのコンテンツを使用するには、その 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 {
"Thank you for using my Windows 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 @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}
ConvertFrom-StringData コマンドレットを使用し、二重引用符で囲まれた here-string。
DATA {
ConvertFrom-StringData -stringdata @" Msg1 = To start,
press any key.
Msg2 = To exit, type "quit".
"@
}
データを生成するユーザー記述のコマンドレットを含む Data セクション。
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