2016-04-10 4 views
-1

Iは、以下の表Poweshell:csvを読み込んでハッシュテーブルを作成し、ハッシュテーブルのデータを使って計算しますか?

Name X  Y  Z 
Al  50 1900 15 
Steel 30 5700 15 

を含むCSVファイルは基本的に、行が「名前」で始まる有するヘッダ行です。まず、このCSVをPowerShellで読み込み、ハッシュテーブルを作成します。その後、ハッシュテーブルからデータを読み込み、簡単な計算を行う必要があります。たとえば、$Hashtable.Alを使用すると、X,Y,Zの値を取得できます。そして、次の式は$Q = $X+$Y+$Zなので、私は$Qの答えを得ることができます。 ($Hashtable.Steelは同じように動作するはずです。)

#Read CSV and Create the hashtable 

    #Read data -X Y Z from hashtable by using 
    $Al = $Hashtable.Al 

    #Do a simple calculation 
    $Q = $Al.X + $Al.Y + $Al.Z 
    $Q 
+0

したがって、 '$ Hashtable.Al'は、CSVの対応する行の' X'、 'Y'、' Z'の値を含む配列を返しますか? –

+0

あなたのコードを書くつもりはありません。どのようにそれを行うかわからない場合は、それを参照してください。あなたは既にコメントで説明された計画を持っています。それぞれを検索すると、必要なものが手に入ります。特定の問題に遭遇した場合は、ここで質問してください。ヒント: 'Import-CSV'。また、すべてのオブジェクト(行:Al、Steelなど)に対して同じ計算を行う場合は、ハッシュテーブルの代わりに配列を使用します。 –

+0

@ MathiasR.Jessenはい、そうです。私は私の説明を更新しました。計算を行うためにX、Y、Zの値を使用したいと思います。 – rock

答えて

1

Name値が、これは超簡単で、行ごとに一意であると仮定すると:

# Create hashtable 
$HashTable = @{} 

# Import CSV 
$CSV = Import-Csv .\Path\To\Csv\File.csv 

# Iterate over the CSV rows and populate the hashtable: 
$CSV |ForEach-Object { $HashTable[$_.Name] = $_ } 

あなたはオブジェクトが含まれていることを確認するには$HashTableだけにあなたがそれらを割り当てるときにXYZプロパティは、Select-Objectを使用しています

$CSV |ForEach-Object { $HashTable[$_.Name] = $_ |Select-Object X,Y,Z } 
関連する問題