ConvertFrom-StringData
1 つまたは複数のキーと値のペアを含む文字列をハッシュ テーブルに変換します。
構文
ConvertFrom-StringData [-StringData] <string> [<CommonParameters>]
説明
ConvertFrom-StringData コマンドレットは、1 つまたは複数のキーと値のペアを含む文字列をハッシュ テーブルに変換します。キーと値の各ペアは個別の行にある必要があるため、多くの場合、入力形式として here-string が使用されます。
ConvertFrom-StringData コマンドレットは、スクリプトまたは関数の DATA セクションに使用できる安全なコマンドレットと見なされています。DATA セクションに使用する場合、文字列の内容が DATA セクションのルールに準拠する必要があります。詳細については、「about_Data_Sections」を参照してください。
パラメーター
-StringData <string>
変換する文字列を指定します。このパラメーターを使用するか、パイプを使用して、文字列を ConvertFrom-StringData に渡すことができます。パラメーター名は省略可能です。
このパラメーターの値は、単一引用符で囲まれた文字列か、二重引用符で囲まれた文字列、またはキーと値のペアを 1 つ以上含む here-string であることが必要です。キーと値の各ペアを個別の行に配置するか、改行文字 (`n) で区切る必要があります。
文字列にはコメントを含めることができますが、コメントをキーと値のペアと同じ行に配置することはできません。コメントはハッシュ テーブルに含まれません。
here-string は、1 つまたは複数の行から構成される文字列で、この内部では引用符が文字どおりに解釈されます。詳細については、「about_Quoting_Rules」を参照してください。
必須 |
true |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByValue) |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.String パイプを使用してキーと値のペアを含む文字列を ConvertFrom-StringData に渡すことができます。 |
出力 |
System.Collections.Hashtable ConvertFrom-StringData は、キーと値のペアから作成されたハッシュ テーブルを返します。 |
注
here-string は、1 つまたは複数の行から構成される文字列で、この内部では引用符が文字どおりに解釈されます。詳細については、「about_Quoting_Rules」を参照してください。
ConvertFrom-StringData は、複数の音声言語でユーザー メッセージを表示するスクリプトで役立ちます。辞書スタイルのハッシュ テーブルを使用することで、リソース ファイルなどのコードからテキスト文字列を分離し、そのテキスト文字列を変換ツールで使用するために書式設定することができます。
例 1
C:\PS>$here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
C:\PS> convertfrom-stringdata -stringdata $here
Name Value
---- -----
Msg3 The specified variable does not exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
説明
-----------
これらのコマンドは、単一引用符で囲まれたユーザー メッセージの here-string をハッシュ テーブルに変換します。単一引用符で囲まれた文字列では、値が変数に置き換えられることがなく、式が評価されません。
最初のコマンドは、here-string を作成して $here 変数に保存します。
2 番目のコマンドは、ConvertFrom-StringData コマンドレットを使用して、$here 変数内の here-string をハッシュ テーブルに変換します。
例 2
C:\PS>$p = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
C:\PS> $p | get-member
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone()
...
C:\PS> $hash = convertfrom-stringdata -stringdata $p
C:\PS> $hash | get-member
TypeName: System.Collections.Hashtable
Name MemberType Definition
---- ---------- ----------
Add Method System.Void Add(Object key, Object
...
説明
-----------
これらのコマンドは、ConvertFrom-StringData が実際に here-string をハッシュ テーブルに変換することを示しています。
最初のコマンドは 1 つのキーと値のペアを含む、二重引用符で囲まれた here-string を作成し、$p 変数に保存します。
2 番目のコマンドは、パイプライン演算子 (|) を使用して $p 変数を Get-Member コマンドレットに送信します。結果には、$p が文字列 (System.String) であることが示されています。
3 番目のコマンドは、ConvertFrom-StringData コマンドレットを使用して、$p の here-string をハッシュ テーブルに変換します。このコマンドは、結果を $hash 変数に保存します。
最後のコマンドは、パイプライン演算子 (|) を使用して $hash 変数を Get-Member コマンドレットに送信します。結果には、$hash 変数の内容がハッシュ テーブル (System.Collections.Hashtable) であることが示されます。
例 3
C:\PS>convertfrom-stringdata -stringdata @'
Name = Disks.ps1
# Category is optional.
Category = Storage
Cost = Free
'@
Name Value
---- -----
Cost Free
Category Storage
Name Disks.ps1
説明
-----------
このコマンドは、キーと値のペアを複数含む、単一引用符で囲まれた here-string をハッシュ テーブルに変換します。
このコマンドで、StringData パラメーターの値は here-string を含む変数ではなく here-string になっています。いずれの形式も有効です。
here-string には、文字列の 1 つに関するコメントが含まれています。コメントをキーと値のペアと異なる行に配置している限り、文字列内のコメントも有効です。
例 4
C:\PS>$a = convertfrom-stringdata -stringdata "Top = Red `n Bottom = Blue"
C:\PS> "Top = " + $a.Top
Top = Red
C:\PS> "Bottom = " + $a.Bottom
Bottom = Blue
説明
-----------
この例では、(here-string ではなく) 二重引用符で囲まれた通常の文字列をハッシュ テーブルに変換し、$a 変数に保存します。
キーと値の各ペアを個別の行に配置するという条件を満たすために、Windows PowerShell の改行文字 (`n) を使用してペアを分離しています。
結果は入力のハッシュ テーブルになります。残りのコマンドは出力を表示します。
例 5
C:\PS>$TextMsgs = DATA {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
C:\PS> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook.
C:\PS> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.
説明
-----------
この例は、スクリプトの DATA セクションに使用された ConvertFrom-StringData コマンドを示しています。DATA セクションの下のステートメントはユーザーにテキストを表示します。
テキストには変数名が含まれるため、変数を展開することなく、文字どおりに解釈するように単一引用符の文字列で囲む必要があります。DATA セクションでは、変数が認められません。
例 6
C:\PS>$here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
C:\PS> $hash = $here | convertfrom-stringdata
C:\PS> $hash
Name Value
---- -----
Msg3 The specified variable does not exist.
Msg2 Credentials are required for this command.
Msg1 The string parameter is required.
説明
-----------
この例は、パイプライン演算子 (|) を使用して、文字列を ConvertFrom-StringData に渡すことができることを示しています。
最初のコマンドは here-string を $here 変数に保存します。2 番目のコマンドは、パイプライン演算子 (|) を使用して $here 変数を ConvertFrom-StringData に送信します。このコマンドは、結果を $hash 変数に保存します。
最後のコマンドは $hash 変数の内容を表示します。
関連項目
概念
about_Data_Sections
about_Quoting_Rules
about_Script_Internationalization