Powershell Skript optimieren, Performance Optimierung, Multithreading, CSV Stapelverarbeitung, CSV Filter
Hallo,
ich nutze folgendes Skript:
Ich nutze es zur Stapelverarbeitung von CSV Dateien (weit über 100000 Dateien) , die immer gleich aufgebaut sind. Mein Problem ist, dass die Bearbeitung meist mehr als 24 h dauert.
Mein Prozessor ist dabei nur zu 13 % ausgelastet und der Arbeitsspeicher läuft nur langsam voll (erreicht irgendwann jedoch 50 GB)
Mein Rechner hat:
Intel 2600k I7 8 Threads
32 GB Arbeitsspeicher (exkl. Auslagerungsdatei)
Windows 10 Enterprise
Ich bin darauf gestoßen, dass man PS-Skripte optimieren kann. Es fehlt mir jedoch das tiefgreifende und vernetze Verständnis für derartige Optimierungen.
Es wäre nett, wenn mir jemand helfen könnte und dazuschreibt, was die Veränderung bewirkt, damit ich etwas dazulerne.
Vielen Dank und einen schönen Feiertag
VG
Rippchen
ich nutze folgendes Skript:
Set-ExecutionPolicy RemoteSigned -Force
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
$folder = 'C:\Daten Bearbeitung\Import'
$out = 'C:\Daten Bearbeitung\Export\Gesamte Daten.csv'
gci $folder -Filter *.csv -recurse | %{
$raw = ((gc $_.FullName) | select -Skip 7)
$csv = $raw[0..($raw.GetUpperBound(0)-1)]| ConvertFrom-CSV -Delimiter ";" -Header "Car","ID","TimeStamp","Note","PublicationTimeStamp","ModificationTimeStamp"
$csv | %{$_."TimeStamp" = get-date $_."Timestamp" -Format 'dd-MM-yyyy HH:mm:ss'}
$csv | %{$_."PublicationTimeStamp" = get-date $_."PublicationTimeStamp" -Format 'dd-MM-yyyy HH:mm:ss'}
$csv | %{$_."ModificationTimeStamp" = get-date $_."ModificationTimeStamp" -Format 'dd-MM-yyyy HH:mm:ss'}
$csv | export-csv $out -Append -Delimiter ";" -Notype -Encoding UTF8
}
# TEIL 2---Filtern (bereinigen) der Daten--------------------------------------------------------------------------------
gci 'C:\Daten Bearbeitung\Export\Gesamte DatenGesamte Daten.csv'| %{
gc $_.FullName | select -Skip 1| ConvertFrom-CSV -Delimiter ";" -Header "Car","ID","TimeStamp","Note","PublicationTimeStamp","ModificationTimeStamp" | group -property 'ID','TimeStamp' | %{$_.Group | sort {get-date $_.'ModificationTimeStamp'} -Descending | select -First 1} | Sort "ID",'Timestamp' -descending | export-csv 'C:\Daten Bearbeitung\Export\bereinigte Daten\Gesamte Daten.csv' -Append -Delimiter ";" -Notype -Encoding UTF8
[System.GC]::Collect()
}
# Zeile 1 bis einschließlich Hier ausführen
Ich nutze es zur Stapelverarbeitung von CSV Dateien (weit über 100000 Dateien) , die immer gleich aufgebaut sind. Mein Problem ist, dass die Bearbeitung meist mehr als 24 h dauert.
Mein Prozessor ist dabei nur zu 13 % ausgelastet und der Arbeitsspeicher läuft nur langsam voll (erreicht irgendwann jedoch 50 GB)
Mein Rechner hat:
Intel 2600k I7 8 Threads
32 GB Arbeitsspeicher (exkl. Auslagerungsdatei)
Windows 10 Enterprise
Ich bin darauf gestoßen, dass man PS-Skripte optimieren kann. Es fehlt mir jedoch das tiefgreifende und vernetze Verständnis für derartige Optimierungen.
Es wäre nett, wenn mir jemand helfen könnte und dazuschreibt, was die Veränderung bewirkt, damit ich etwas dazulerne.
Vielen Dank und einen schönen Feiertag
VG
Rippchen
Please also mark the comments that contributed to the solution of the article
Content-Key: 319619
Url: https://administrator.de/contentid/319619
Printed on: May 4, 2024 at 08:05 o'clock
3 Comments
Latest comment
Nimm einen Workflow zur parallelen Verarbeitung:
https://blogs.technet.microsoft.com/heyscriptingguy/2012/12/26/powershel ...
Schluckauf
https://blogs.technet.microsoft.com/heyscriptingguy/2012/12/26/powershel ...
Schluckauf
Mein Skript habe ich auch nur durch Hilfe dieses Forums zusammenbauen können.
Sicher das du den richtigen Job gewählt hast?Meine Grundlagen sind wirklich gering.
sieht man.Artikel wurde nicht vollständig gelesen ...