次の方法で共有


ConvertFrom-StringData

1 つ以上のキーと値のペアを含む文字列をハッシュ テーブルに変換します。

構文

ConvertFrom-StringData
                [-StringData] <String>
                [[-Delimiter] <Char>]
                [<CommonParameters>]

説明

ConvertFrom-StringData コマンドレットは、1 つ以上のキーと値のペアを含む文字列をハッシュ テーブルに変換します。 各キーと値のペアは別々の行に配置する必要があるため、多くの場合、入力形式として here 文字列が使用されます。 既定では、キー は、等号 () 文字で 値から分離する必要があります。

ConvertFrom-StringData コマンドレットは、スクリプトまたは関数の DATA セクションで使用できる安全なコマンドレットと見なされます。 DATA セクションで使用する場合、文字列の内容は、DATA セクションの規則に準拠している必要があります。 詳細については、about_Data_Sectionsを参照してください。

ConvertFrom-StringData では、従来の機械翻訳ツールで使用できるエスケープ文字シーケンスがサポートされています。 つまり、コマンドレットは、通常スクリプト内の行の末尾を通知する PowerShell バックティック文字 (`) ではなく、Regex.Unescape メソッドを使用して、バックスラッシュ (\) を文字列データ内のエスケープ文字として解釈できます。 この文字列内では、バックティック文字は機能しません。 次のように、前の円記号でエスケープすることで、結果のリテラル円記号を保持することもできます。\\。 エスケープされていない円記号 (ファイル パスでよく使用される文字など) は、結果に無効なエスケープ シーケンスとしてレンダリングされる可能性があります。

PowerShell 7 では、区切り記号 パラメーターが追加されます。

例 1: ここで一重引用符で囲まれた文字列をハッシュ テーブルに変換する

この例では、ユーザー メッセージの単一引用符で囲まれた文字列をハッシュ テーブルに変換します。 単一引用符で囲まれた文字列では、値は変数に置き換えされず、式は評価されません。 ConvertFrom-StringData コマンドレットは、$Here 変数の値をハッシュ テーブルに変換します。

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
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.

例 2: 別の区切り記号を使用して文字列データを変換する

この例では、区切り記号として別の文字を使用する文字列データを変換する方法を示します。 この例では、文字列データは区切り記号としてパイプ文字 (|) を使用しています。

$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData

Name                           Value
----                           -----
condition                      mint
model                          coupe
color                          red
year                           1965

例 3: コメントを含む here 文字列を変換する

この例では、コメントと複数のキーと値のペアを含む here 文字列をハッシュ テーブルに変換します。

ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

StringData パラメーターの値は、here-string を含む変数ではなく、here-string です。 どちらの形式も有効です。 この文字列には、いずれかの文字列に関するコメントが含まれています。 ConvertFrom-StringData は 1 行のコメントを無視しますが、# 文字は行の最初の空白以外の文字である必要があります。 # の後の行のすべての文字は無視されます。

例 4: 文字列をハッシュ テーブルに変換する

この例では、(ここの文字列ではなく) 通常の二重引用符で囲まれた文字列をハッシュ テーブルに変換し、$A 変数に保存します。

$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A

Name             Value
----             -----
Bottom           Blue
Top              Red

各キーと値のペアが別々の行にある必要がある条件を満たすために、文字列は PowerShell 改行文字 (`n) を使用してペアを区切ります。

例 5: スクリプトの DATA セクションで ConvertFrom-StringData を使用する

この例では、スクリプトの DATA セクションで使用される ConvertFrom-StringData コマンドを示します。 DATA セクションの下のステートメントは、ユーザーにテキストを表示します。

$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.
'@
}
$TextMsgs

Name             Value
----             -----
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.

テキストには変数名が含まれているため、変数がリテラルで解釈され、展開されないように、単一引用符で囲む必要があります。 DATA セクションでは変数を使用できません。

例 6: パイプライン演算子を使用して文字列を渡す

この例では、パイプライン演算子 (|) を使用して文字列を ConvertFrom-StringDataに送信できることを示します。 $Here 変数の値は ConvertFrom-StringData にパイプされ、結果は $Hash 変数になります。

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash

Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

例 7: エスケープ文字を使用して改行と戻り文字を追加する

この例では、エスケープ文字を使用して新しい行を作成し、ソース データに文字を返す方法を示します。 エスケープ シーケンス \n は、結果のハッシュ テーブル内の名前または項目に関連付けられたテキスト ブロック内に新しい行を作成するために使用されます。

ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List

Name  : Angelo
Value : Let there be some more test made of my metal,
        Before so noble and so great a figure
        Be stamp'd upon it.

Name  : Vincentio
Value : Heaven doth with us as we with torches do,
        Not light them for themselves; for if our virtues
        Did not go forth of us, 'twere all alike
        As if we had them not.

例 8: 円記号エスケープ文字を使用してファイル パスを正しくレンダリングする

この例では、文字列データで円記号エスケープ文字を使用して、結果の ConvertFrom-StringData ハッシュ テーブルでファイル パスを正しくレンダリングできるようにする方法を示します。 二重円記号を使用すると、リテラル円記号がハッシュ テーブルの出力で正しくレンダリングされます。

ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"

Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

パラメーター

-Delimiter

キー を変換する文字列の データから分離するために使用される文字。 既定の区切り記号は等号 (=) 文字です。 このパラメーターは PowerShell 7 で追加されました。

型:Char
配置:0
規定値:'='
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-StringData

変換する文字列を指定します。 このパラメーターを使用するか、文字列をパイプ処理して ConvertFrom-StringDataできます。 パラメーター名は省略可能です。

このパラメーターの値は、1 つ以上のキーと値のペアを含む文字列である必要があります。 各キーと値のペアは、個別の行に配置する必要があります。または、各ペアを改行文字 (`n) で区切る必要があります。

文字列にコメントを含めることができますが、コメントをキーと値のペアと同じ行にすることはできません。 ConvertFrom-StringData は 1 行のコメントを無視します。 # 文字は、行の最初の空白以外の文字である必要があります。 # の後の行のすべての文字は無視されます。 コメントはハッシュ テーブルに含まれません。

here-string は、1 行以上の行で構成される文字列です。 この文字列内の引用符は、文字列データの一部としてリテラルに解釈されます。 詳細については、about_Quoting_Rulesを参照してください。

型:String
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

入力

String

キーと値のペアを含む文字列をパイプ処理して、ConvertFrom-StringDataできます。

出力

Hashtable

このコマンドレットは、キーと値のペアから作成されるハッシュ テーブルを返します。

メモ

here-string は、引用符がリテラルで解釈される 1 つ以上の行で構成される文字列です。

このコマンドレットは、複数の音声言語でユーザー メッセージを表示するスクリプトで役立ちます。 辞書スタイルのハッシュ テーブルを使用すると、リソース ファイルなどのコードからテキスト文字列を分離したり、翻訳ツールで使用するテキスト文字列の書式を設定したりできます。