在PowerShell中搜索排序的数组,提取数据并创建新文件

时间:2019-07-09 13:32:47

标签: powershell

这是我要排序,搜索并最终提取数据并创建新文件的文件示例。

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分钟。知道如何加快此过程吗?

0 个答案:

没有答案