这是我要排序,搜索并最终提取数据并创建新文件的文件示例。
Column1, Column2, Column3 A,1,2 B,1,2 C,1,2 A,1,3 B,3,4 A,2,3 B,4,5 C,1,4 D,3,4 A,2,3 D,2,3
首先,我想按Column1排序(简单)。接下来所有行的创建文件都属于Column1中的特定值。例如:
文件1:
A,1,2 A,1,3 A,2,3 A,2,3
文件2:
B,1,2 B,3,4 B,4,5
...
第一个想法是读取排序后的数组的每一行,并停止创建第一个文件,在该文件中出现来自Column1的新值(并开始创建下一个文件),但由于我有成千上万个这样的事实,我想避免这样做行。 第二个想法是从Column1中查找唯一值,并使用它来查找数组中的数据。但是这里我将有成千上万的查询。 代码:
$array = Import-CSV -Path .\IDMUsers.csv -Delimiter ";"
$sorted = $array | Sort-Object -Property ManagerMail -Unique | Select- Object 'ManagerMail'
$sorted_array = $array | sort {$_.ManagerMail,$_.DisplayName}
ForEach ($manager in $sorted){
$UsersofManager = $sorted_array | ? {$_.ManagerMail -contains $manager.ManagerMail} | Export-Csv ".\$($manager.ManagerMail).csv" -NoTypeInformation
}
我在CSV中有10万行。首先,我找到唯一的行($ sorted->大约200行),最后查询每一行的$ sorted_array并创建文件。大约需要20分钟。知道如何加快此过程吗?