Jump to content

Powershell Datei hash


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi

 

Ich versuche gerade ein script zu schreiben, dass Dateien und Ordner von einem Verzeichnis in ein anderes kopiert und danach alle Dateien vergleicht. Eigentlich wollte ich dies zuerst mit dem aufruf einer Exe erreichen die die Berechnungen durchführt. Leider funktionierte dies teilweise nicht und das Programm meldete die zu prüfende Datei existiere nicht. Da dies sowohl andere Mitarbeiter und auch ich nicht korrigieren konnten habe ich mich dazu entschlossen das ganze in Powershell selber zu berechnen.

 

Leider funktioneirt auch dies irgendwie nicht und ich verstehe nicht warum. Ich erhalte immer den selben hash als Ausgabe.

Im Code ist auch noch eine andere Funktion die MD5 hash berechnen sollte auskommentiert. Bei dieser wurde der hash nur auf Grund des Dateinamens berechnet was uns nicht wirklich was bringt.

 

Ich erhalte jedesmal den Wert A0FD1359C23144777654BDBBE21ED104 .

Bis jetzt konnte ich nicht herausfinden warum. Da ich das erste mal mit Powershell arbeite könnte es ein simples Problem sein bzw. Total fehlendes Grundverständnis. ^^'

Funktion:

 

#function md5 ($inputString1)
#{
#$inputsring = New-Object System.IO.FileInfo($inpuString1)
#$cryptoServiceProvider = [system.Security.Cryptography.MD5CryptoServiceProvider];
#$hashAlgorithm = new-object $cryptoServiceProvider
#$hashByteArray1 = $hashAlgorithm.ComputeHash([Char[]]$inputString1);
#$hashByteArray2 = $hashAlgorithm.ComputeHash([Char[]]$inputString2);
#foreach ($byte in $hashByteArray1) { $result1 += “{0:X2}” -f $byte}
#foreach ($byte in $hashByteArray2) { $result2 += “{0:X2}” -f $byte }

#Write-Output $result1
#Write-Host $result2
#}
function copyrec($target,$source)
{
Copy-Item -Recurse $source $target
Set-Location -Path $source
Set-Location -Path ..
$nsource = Get-Location
$a = Get-ChildItem -Recurse $nsource | sort Fullname
$b = Get-ChildItem -Recurse $target | sort Fullname
foreach ($c in $a)
{
	if(!$c.PSIsContainer)
	{
		$provider = New-Object System.Security.Cryptography.MD5CryptoServiceProvider
		$inFileInfo = New-Object System.IO.FileInfo($c.FullName)
		$inStream = $inFileInfo.OpenRead()
		$hashBytes = $provider.ComputeHash($inStream)
		foreach ($byte in $hashBytes)
			{
				$hash = $hash + $byte.ToString("X2")	
			}
		$tmp = $hash
		$tmp = $tmp + " " + $c.FullName
		Write-Output $tmp | Out-File c:\powershelltest\Asource.txt -Append
	}
}
foreach ($c in $b)
{
	if (!$c.PSIsContainer)
	{
		$provider = New-Object System.Security.Cryptography.MD5CryptoServiceProvider
		$inFileInfo = New-Object System.IO.FileInfo($c.FullName)
		$inStream = $inFileInfo.OpenRead()
		$hashBytes = $provider.ComputeHash($inStream)
		foreach ($byte in $hashBytes)
			{
				$hash = $hash + $byte.ToString("X2")	
			}
		$tmp = $hash
		$tmp = $tmp + " " + $c.FullName
	Write-Output $tmp | Out-File c:\powershelltest\Atarget.txt -Append
	}
}
}

Link zu diesem Kommentar

:schreck: OK das war schon mal ein ****er Fehler. Eigentlich nicht den den ich meinte aber erklärt warum ich teilweise im txt file so riesige Zahlenreihen hatte.. Danke :D

Das Problem warum die Hash werte identisch waren lag daran, dass sämmtliche Dateien die ich prüfte identischen Inhalt hatten und nur nen anderen Namen. -.-

Ich hatte die Ordnerstruktur vor einigen Tagen erstellt um den kopierbefehl zu testen und vergessen, dass ich überall nur identische Daten reingetan habe -.-

Manchmal echt bescheurt woran ich mir die Zähna ausbeise... selber generiert Probleme ...

Vielen Dank nochmal :D

 

Jetzt das ganze noch erweitern damit es nur daten auf Grund eines bestimmten Datums kopiert ^^

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...