Moin moin,
ich bins mal wieder und darf kräftig nerven, ich bin mir jetzt schon ziemlich sicher, mehrere Fragen einstellen zu müssen für dasselbe Projekt.
@OFF TOPIC
Ich darf ja aus Datenschutzgründen nicht alles entsprechend Posten darum bitte ich um verständnis, wenn ich mich ab und zu etwas schwammig ausdrücke ich gebe mein Bestes die Probleme entsprechend darzustellen.
Zum Projekt, es werden mit Powershell riesige Mengen Daten verschoben von A nach B nach C nach D und desöfteren mal abgeglichen (MD5). Schluss endlich gibt es auch eine Kopplung zwischen dem User und seiner ID auf verschiedenen Servern.
Evtl. kommt auch noch das Thema Zip/Rar mit hinein und alles mündet in einem FTP für die "endauslieferung" der Daten an die Kunden.
Nun aber mal zu meinem akuten Problem, der liegt schon am Anfang des Skriptes das entstehen soll:
@Topic
Ordner "Source" beinhaltet ~7000 Dateien und jede soll jetzt folgends abgearbeitet werden:
Dateiname + MD5 in eine txt-Datei geschrieben werden (eine Zeile). Danach wird die Datei anhand des Namens in den Ordner "SourceSec" kopiert, sofern die MD5 vorhanden ist und anschließend die MD5(SourceSec) mit der txt-Datei abgeglichen. Abschließend wird die Datei in "Source" gelöscht!
Codeschnippsel
# SourceFolder $Source = "c:\MXPSKRIPT\Source" $SourceSec = ".\SourceSec\" $SourceMD5 = ".\SourceMD5\" $SourceUsr = ".\SourceUsr\" $SourcePkg = ".\SourcePkg\" $UsrFolder # Dateien (Listen) $List01 $List02 $List03 $List04 # Dateien (Fidibus) $UsrFolderDatei $UsrDatei = "$Source\hallo.txt" #function Get-MD5{ #$md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider #$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($Source\$_))) #} #$hash = [Security.Cryptography.HashAlgorithm]::Create( "MD5" ) #$stream = ([IO.StreamReader]"$UsrDatei").BaseStream #-join ($hash.ComputeHash($stream) | ForEach { "{0:x2}" -f $_ }) #$stream.Close() ##################Routine - MD5 erstellen von Source################## #Get-ChildItem $Source -Filter *.txt | Get-MD5 function Get-FileMD5 { $hash = [Security.Cryptography.HashAlgorithm]::Create( "MD5" ) $stream = ([IO.StreamReader]"$Source\$_").BaseStream -join ($hash.ComputeHash($stream) | ForEach { "{0:x2}" -f $_ }) $stream.Close() }@Zusatz
Im Grunde möchte ich alles nicht als txt-Datei speichern, aber ich muss alle Bewegungen und Hashes protokollieren, und auf einzelne Werte zurückgreifen können! Es muss stets nachvollzogen werden, wo welche Datei gerade lliegt und was schon mit ihr gemacht wurde.
Nun, es sind viele Dateien, aber kleine ~16kb ist schon groß (größte Ausnahme war mal 2MB)... Da MD5 die Datei immer ganz einlesen muss hab ich gedacht man könnte auch einen CRC32 Check von Filesystem nehmen, da muss dann ja nur der Hash später zwischen den Servern getuascht und verglichen werden und nicht jedes mal der Traffic für die ganze Datei! (aber frag mal Google oder das technet -.-", gibts nichts mit Powershell das brauchbar wäre)...
Für vorschläge den Traffic klein zuhalten bin ich immer gerne offen!
Punkte zu meiner Umgebung: bisher sind keine Zusatz Module installiert. Sollten welche gebraucht werden muss ich mal mit meinem Chef reden, das entsprechend welche installiert werden müssen um die Umsetzbarkeit zugewährleisten. Ich selbst hab da sicherlich
noch den Azubibonus den ich geltend machen kann. Ich bin hochmotiviert vieles alleine zuschaffen, bzw. Ergebnisse mit euch zu teilen, aber diesen Anfang bekomme ich gerde nicht auf die Reihe... vermutlich da ich mich nicht richtig Konzentrieren kann, diverse
Krankmeldungen dessen Tickets ich nun auch noch bearbeite halten mich etwas auf.
Darum bitte ich um Eure Unterstützung ;-)
Dankööö
Gruß Jannis