我想使用超过300,000行的CSV文件。我需要逐行验证信息,然后以表格形式显示在.txt文件中,以查看所有服务器缺少哪个文件。例如
Name,Server
File1,Server1
File2,Server1
File3,Server1
File1,Server2
File2,Server2
...
File345,Server76
File346,Server32
我想以表格形式显示与上面示例对应的结果:
Name Server1 Server2 ... Server 32 ....Server 76
File1 X X
File2 X X
File3 X
...
File345 X
File346 X
实际上,为了做到这一点,我有一个函数,它创建的对象的成员是服务器名称(成员对象的数量可以改变),我使用流读取器来拆分数据(我的csv中有超过2列,所以0是服务器名称,5是文件名)
$stream = [System.IO.StreamReader]::new($File)
$stream.ReadLine() | Out-Null
while ((-not $stream.EndOfStream)) {
$line = $stream.ReadLine()
$strTempo = $null
$strTempo = $line -split ","
$index = $listOfFile.Name.IndexOf($strTempo[5])
if ($index -ne -1) {
$property = $strTempo[0].Replace("-", "_")
$listOfFile[$index].$property = "X"
}
else {
$obj = CreateEmptyObject ($listOfConfiguration)
$obj.Name = $strTempo[5]
$listOfFile.Add($obj) | Out-Null
}
}
当我导出这个时,我有一个相当好的结果。但是脚本花费了太多的时间(20分钟到1小时)
我不知道如何优化脚本,我是PowerShell的初学者。
谢谢你的未来提示
1条答案
按热度按时间waxmsbnn1#
看看这是否工作得更快。根据需要更改文件名