ConvertFrom-StringData
1 つまたは複数のキーと値のペアを含む文字列をハッシュ テーブルに変換します。
構文
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
説明
ConvertFrom-StringData
コマンドレットは、1 つ以上のキーと値のペアを含む文字列をハッシュ テーブルに変換します。 各キーと値のペアは別々の行に配置する必要があるため、多くの場合、入力形式として here 文字列が使用されます。 既定では、key は等号 (=
) 文字でvalue から分離する必要があります。
ConvertFrom-StringData
コマンドレットは、スクリプトまたは関数の DATA セクションで使用できる安全なコマンドレットと見なされます。 DATA セクションで使用する場合、文字列の内容は、DATA セクションの規則に準拠している必要があります。 詳細については、 about_Data_Sectionsを参照してください。
ConvertFrom-StringData
では、従来の機械翻訳ツールで許可されるエスケープ文字シーケンスがサポートされています。 つまり、コマンドレットは、通常スクリプト内の行の末尾を通知する PowerShell バックティック文字 (`
) ではなく、Regex.Unescape メソッドを使用して、バックスラッシュ (\
) を文字列データ内のエスケープ文字として解釈できます。
ヒア文字列内では、アクサン グラーブ文字は機能しません。 また、次のように、前の円記号でエスケープすることで、結果のリテラル円記号を保持することもできます: \\
。 ファイルのパスでよく使用されるような、エスケープされていない円記号は、結果内で無効なエスケープ シーケンスとして扱われる可能性があります。
PowerShell 7 では、 Delimiter パラメーターが追加されます。
例
例 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 です。 どちらの形式も有効です。 ヒア文字列には、文字列の 1 つについてのコメントが含まれています。
ConvertFrom-StringData
は単一行コメントを無視しますが、#
文字は行の最初の空白以外の文字である必要があります。 #
の後の行のすべての文字は無視されます。
例 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
keyを変換する文字列内のvalueデータから分離するために使用される文字。
既定の区切り記号は等号 (=
) 文字です。 このパラメーターは PowerShell 7 で追加されました。
型: | Char |
配置: | 1 |
規定値: | '=' |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-StringData
変換する文字列を指定します。 このパラメーターを使用するか、文字列をパイプ処理して ConvertFrom-StringData
できます。 パラメーター名は省略可能です。
このパラメーターの値は、1 つ以上のキーと値のペアを含む文字列である必要があります。 各キーと値のペアは別々の行に配置する必要があります。または、各ペアを改行文字 (`n
) で区切る必要があります。
文字列にコメントを含めることができますが、コメントをキーと値のペアと同じ行にすることはできません。 ConvertFrom-StringData
は単一行コメントを無視します。 #
文字は、行の最初の空白以外の文字である必要があります。 #
の後の行のすべての文字は無視されます。 コメントは、ハッシュ テーブルに含まれません。
here-string は、1 行以上の行で構成される文字列です。 この文字列内の引用符は、文字列データの一部としてリテラルに解釈されます。 詳細については、「 about_Quoting_Rules」を参照してください。
型: | String |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
入力
キーと値のペアを含む文字列をこのコマンドレットにパイプできます。
出力
このコマンドレットは、キーと値のペアから作成されるハッシュ テーブルを返します。
メモ
ヒア文字列は、1 つまたは複数の行から構成される文字列で、引用符はリテラルとして解釈されます。
このコマンドレットは、複数の音声言語でユーザー メッセージを表示するスクリプトで役立ちます。 辞書形式のハッシュ テーブルを使用すると、リソース ファイルのようにコードからテキスト文字列を分離したり、翻訳ツールで使用するためにテキスト文字列を書式設定したりできます。
PowerShell