Powershell:Array vs Hashtable(或两者)不确定如何继续

时间:2013-12-27 21:01:41

标签: arrays powershell csv hashtable

我有以下powershell脚本:

$grouped_TPR_Test1=Import-Csv c:\TPR.csv | group UPC -AsHashTable -AsString
Import-Csv c:\HQ.csv  | foreach{
$tpr_Sales=($grouped_TPR_Test1."$($_.UPC)" | foreach {$_.TPR_Sales}) -join ","
$_ | Add-Member -MemberType NoteProperty -Name TPR_SALES -Value $tpr_Sales -PassThru 
} | Export-Csv -NoTypeInformation c:\HQ_TPR_sales.csv

它找到/匹配文件c:\ TPR.csv中的UPC值,该文件中的值相同。 c:\ HQ.csv并将相应的销售数据输出到第三个文件,该文件包含c:\ HQ.csv中的所有字段以及来自c:\ TPR.csv

的UPC上匹配的其他字段

这很有效。

但是,我不确定如何添加第二个字段进行检查(“区域”,以缩小发送到第3个输出文件的结果。两个文件都将区域字段设置为好。

我对此有所了解,并且数组似乎更适合多个条件,而不是散列表,但我没有太多运气。

c:\HQ.csv looks essentially like this:                                    

UPC           ZONE column1  column2  column3
1234567890123   3    blah1  blah2    blah3

c:\TPR.csv looks essentially like this:

UPC            ZONE sales
1234567890123   3   5.00
1234567890123   2   4.00
3210987654321   2   3.00

感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

您只需在生成的文件中使用WHERE-OBJECT即可拉出您感兴趣的区域:

Import-CSV c:\HQ_TPR_sales.csv | WHERE-OBJECT {$_.Zone -eq 2}

或者在导出-csv:

之前将WHERE-OBJECT放入管道
... | ? {$_.Zone -eq 2} | Export-CSV ...