about_Data_Sections
簡単な説明
テキスト文字列やその他の読み取り専用データをスクリプト ロジックから分離するデータ セクションについて説明します。
詳細な説明
PowerShell 用に設計されたスクリプトには、データのみを含む 1 つ以上のデータ セクションを含めることができます。 任意のスクリプト、関数、または高度な関数に 1 つ以上のデータ セクションを含めることができます。 [データ] セクションの内容は、PowerShell スクリプト言語の指定されたサブセットに制限されます。
データをコード ロジックから分離すると、ロジックとデータの両方を簡単に識別して管理できます。 これにより、エラー メッセージやヘルプ文字列など、テキスト用の個別の文字列リソース ファイルを作成できます。 また、コード ロジックを分離し、セキュリティテストと検証テストを容易にします。
PowerShell では、[データ] セクションを使用してスクリプトの国際化をサポートします。 Data セクションを使用すると、多くのユーザー インターフェイス (UI) 言語に変換される文字列の分離、検索、および処理を容易にすることができます。
[データ] セクションは PowerShell 2.0 機能です。 データ セクションを含むスクリプトは、リビジョンなしで PowerShell 1.0 では実行されません。
構文
Data セクションの構文は次のとおりです。
DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
<Permitted content>
}
Data キーワードが必要です。 大文字と小文字は区別されません。 許可されるコンテンツは、次の要素に制限されます。
すべての PowerShell 演算子 (ただし、
-match
If
、Else
、ElseIf
ステートメント次の自動変数:
$PsCulture
、$PsUICulture
、$True
、$False
、および$Null
Comments
Pipelines
セミコロン (
;
) で区切られたステートメントリテラル。次のようになります。
a 1 1,2,3 "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
コマンドレットを使用する場合は、キーと値のペアを一重引用符または二重引用符で囲むか、単一引用符または二重引用符で囲んだ文字列で囲むことができます。 ただし、変数と部分式を含む文字列は、変数が展開されず、部分式が実行可能でないように、単一引用符で囲まれた文字列または単一引用符で囲む必要があります。
-SupportedCommand
-SupportedCommand
パラメーターを使用すると、コマンドレットまたは関数がデータのみを生成することを示すことができます。 これは、ユーザーが作成またはテストしたデータ セクションにコマンドレットと関数を含めることを許可するように設計されています。
-SupportedCommand
の値は、1 つ以上のコマンドレット名または関数名のコンマ区切りのリストです。
たとえば、次のデータ セクションには、XML ファイル内のデータを書式設定するユーザー作成コマンドレット ( Format-Xml
) が含まれています。
DATA -supportedCommand Format-Xml
{
Format-Xml -Strings string1, string2, string3
}
データ セクションの使用
Data セクションのコンテンツを使用するには、それを変数に割り当て、変数表記を使用してコンテンツにアクセスします。
たとえば、次のデータ セクションには、この文字列をハッシュ テーブルに変換する 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
コマンドレットを使用する、ここで一重引用符で囲まれた文字列。
DATA {
ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
ConvertFrom-StringData
コマンドレットを使用する二重引用符で囲まれた文字列。
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
}
関連項目
PowerShell