PowerShell Cmdlet - ConvertFrom-StringData
 記事記号:[mf1921] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    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、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help 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 の he
    re-string をハッシュ テーブルに変換します。このコマンドは、結果を $hash 変数
    に保存します。
    
    最後のコマンドは、パイプライン演算子 (|) を使用して $hash 変数を Get-Member 
    コマンドレットに送信します。結果には、$hash 変数の内容がハッシュ テーブル (Sy
    stem.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 PowerSh
    ell の改行文字 (`n) を使用してペアを分離しています。
    
    結果は入力のハッシュ テーブルになります。残りのコマンドは出力を表示します。
    
    -------------------------- 例 5 --------------------------
    
    C:\PS>$TextMsgs = DATA {
      ConvertFrom-StringData @'
        Text001 = The $Notebook variable contains the     name of the user's sys
        tem notebook.
        Text002 = The $MyNotebook variable contains the     name of the user's p
        rivate 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 変数の内容を表示します。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113288
    about_Data_Sections 
    about_Quoting_Rules 
    about_Script_Internationalization 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、ConvertFrom-StringData
ご利用数: 1857567
感想・要望・問い合わせは こちら