Windows PowerShell 2.0 CTP(8)文字列から連想配列を生成する(ConvertFrom-StringData)


ConvertFrom-StringDataは、以下の形式の文字列から、連想配列を生成するコマンドレットです。

name=value

使用方法

ConvertFrom-StringData [-StringData] <String>

コンバート対象文字列をStringDataオプションに指定します。

サンプル:文字列変数から連想配列を生成する

$hereString = @'
BlogName=PowerShell Memo
BlogURL=http://d.hatena.ne.jp/newpops/
'@
$hash = ConvertFrom-StringData $hereString

上記は、まず、ヒア文字列として「name=value」形式の文字列変数($hereString)を定義しています。
その後、ConvertFrom-StringDataコマンドレットで連想配列に変換し、$hashに格納しています。

型を確認する
PS C:\> $hash.GetType().FullName
System.Collections.Hashtable

型は「System.Collections.Hashtable」ですね。

連想配列の内容を確認する
PS C:\> $hash

Name                           Value
----                           -----
BlogURL                        http://d.hatena.ne.jp/newpops/
BlogName                       PowerShell Memo

間違いなく、連想配列になっています。

サンプル:ファイルに書かれた文字列から連想配列を生成する

最初に以下の内容の「HashData.txt」を用意します。

HashData.txt
BlogName=PowerShell Memo
BlogURL=http://d.hatena.ne.jp/newpops/

HashData.txtを配置したディレクトリに移動し、以下を実行してみます。

Get-Content HashData.txt | %{$hash += ConvertFrom-StringData $_}

上記では、以下の処理を行っています。

  1. Get-ContentコマンドレットでHashData.txtを1行ずつ読み込みます
  2. 各行に対してConvertFrom-StringDataで連想配列に変換します
  3. 変換後の連想配列を$hash変数に追加します
連想配列の内容を確認する
PS C:\> $hash

Name                           Value
----                           -----
BlogName                       PowerShell Memo
BlogURL                        http://d.hatena.ne.jp/newpops/

こちらも、間違いなく、連想配列になっています。