2016-08-01 10 views
1

私は、カスタムオブジェクトの配列を持っています。私がこれをやった理由は、どこに空白があるのか​​を簡単に見ることができるマトリックスを作りたいからです(ただし、必要ならばこれらを設定することもできます)。更新オブジェクト配列は、

次に、最終レポートをエクスポートする前に、2番目のデータセットを繰り返し処理し、この配列内のこれらの値を更新したいとします。例えば。私はそれを行う方法が分からないよう(このビットはかなり擬似コードです:

$phonelist = Import-Csv .\phonelist.csv 

foreach ($entry in $phonelist) 
{ 
    $name = $entry.Name 
    if ($report.Contains(Name)) 
    { 
    # update the PhoneNumber property of that specific object in the array with 
    # another value pulled out of this second CSV 
    } 
    else 
    { 
    # Create a new object and add it to the report - don't worry I've already got 
    # a function for this 
    } 
} 

私は文がインデックスを返すためにならば、私はおそらく私を必要とし、この最後のビットのために推測し、その後にそのインデックスを使用していますオブジェクトを更新してください。この段階ではかなり失われています。

これは単純な例です。その後、私は従業員IDを含む2番目のファイルを調べる必要があります。異なるデータソースからすべてを更新する必要があり、データソースにはさまざまな人のリストが含まれていますが、いくつかの重複があるため、複数の繰り返しがあります。

どうすればいいですか?

答えて

0

私は$phonelistを2回繰り返します。初めて、あなたは名前があなたの$myListにあるすべての電話エンティティをフィルタリングし、目的のオブジェクトを作成することができます。

$phonelist = import-cse .\phonelist.csv 
$report = $phonelist | Where Name -in ($mylist | select Name) | Foreach-Object { 
    [PSCustomObject]@{ 
     Name = $_.Name 
     PhoneNumber = $_.PhoneNumber 
     EmployeeID = '' 
    } 
} 

名前が$myListしていないすべての電話エンティティをフィルタリングして、新しいオブジェクトを作成して二回目:

$report += $phonelist | Where Name -NotIn ($mylist | select Name) | Foreach-Object { 
    #Create a new object and add it to the report - don't worry I've already got a function for this 
} 
2

私はphonelist.csvをハッシュテーブルに読み込みます。

$phonelist = @{} 
Import-Csv .\phonelist.csv | ForEach-Object { $phonelist[$_.name] = $_.number } 

、あなたはそれを作成するよう$reportで電話番号を記入のためにそのハッシュテーブルを使用します:このよう

$report = foreach ($person in $mylist) { 
    New-Object -Type PSObject -Property @{ 
    Name  = $person.Name 
    EmployeeID = $null 
    PhoneNumber = $phonelist[$person.Name] 
    } 
} 

あなたはまだのような報告書に含まれていないエントリの電話番号リストを確認することができますこれは

Compare-Object $report.Name ([array]$phonelist.Keys) | 
    Where-Object { $_.SideIndicator -eq '=>' } | 
    Select-Object -Expand InputObject 
+0

問題の追加詳細をご覧ください。私はまだこれが動作すると思う、私はそれを試してみて、あなたに知らせるでしょう。しかし、その間に追加の詳細が与えられれば、もっと良い方法があると思うなら、私に知らせてください。 –

+1

私はすべてのデータに同じアプローチを使用したいと思います。検索キーとして使用できる一意の属性を選択します。ユニーク属性をキーとして使用して、すべての追加データをハッシュテーブルにロードします。レポートを生成し、ハッシュテーブルルックアップを使用してプロパティを生成します。実際のデータがどのように見えるかに応じて、いくつかのミキシングとマッチングが必要かもしれませんが、これが一般的なアプローチです。 –

関連する問題