В настоящее время у меня есть сценарий PowerShell, который импортирует файл CSV, а затем фильтрует 1-й столбец, чтобы удалить всю строку, если строка превышает определенное время. Однако использование Import-Csv
занимает очень много времени. Есть ли другой способ добиться того же результата без использования Import-Csv
?
Вот сценарий на данный момент:
$files = Get-ChildItem "C:\Results\*.csv"
foreach ($file in $files) {
$filename = [IO.Path]::GetFileNameWithoutExtension($file)
$csv = Import-Csv $file
$dateTime = $csv[0]."Date and Time"
$startTime = $dateTime.Substring($dateTime.get_Length()-8)
$endTime = $startTime
[int]$hour, [int]$min, [int]$sec = $endTime.Split(':')
$hour = $hour + 1
$min = 44
$sec = 59
$csv | ForEach-Object {
$lineTime = $_."Date and Time"
$startTime = $lineTime.Substring($lineTime.get_Length()-8)
$newHour, $newMin, $newSec = $startTime.Split(':')
if (($newHour -lt $hour -and $newMin -gt $min) -or ($newHour -eq $hour -and $newMin -le $min)) {
$_ | Export-Csv -Path "C:\PerfResults\NewFiles\$filename-NEW.csv" -Append
}
}
}
РЕДАКТИРОВАТЬ:
По просьбе Олафа ниже приведен пример данных в файле CSV:
Date and Time Memory Overcommit (1 Minute Avg) Memory Overcommit (5 Minute Avg) Memory Overcommit (15 Minute Avg) Cpu Load (1 Minute Avg) Cpu Load (5 Minute Avg) Load (15 Minute Avg) Physical Cpu(0)\% Processor Time 07/24/2018 14:45:03 0 0 0 0.11 0.13 0.11 7.31 07/24/2018 14:45:06 0 0 0 0.11 0.13 0.12 1.41
-Append
очень медленно из-за необходимости внутренней работы файловой системы. - person Olaf   schedule 13.09.2018