Keine Ausgabe von get-filehash
Ich bin auf der Suche nach einem zuverlässigen command-line-Methode, SHA256-hashes für Dateien in Windows. Mein Verständnis ist, dass die Art und Weise, dies zu tun ist über Microsoft Get-FileHash-cmdlet unter PowerShell. Ich habe gesehen, dass mehrere web-Seiten mit Beispielen und überprüft die Microsoft-Dokumentation. Es scheint, dass Sie die folgende syntax sollte auf Windows Server 2012:
Get-FileHash myfile.txt -Algorithm SHA256
Den Befehl ohne Fehler ausgeführt, aber es gibt keine Ausgabe. Wenn ich senden Sie die Ausgabe an eine Datei, die Datei wird erstellt, ohne Inhalt. Ich habe auch schon Beispiele gesehen, die leiten Sie die Ausgabe zu Formatieren-Liste; ich habe versucht, aber immer noch nichts. Ich habe auch versucht den Befehl ausführt mit Ungültiger Argumente, und wieder nichts.
Ich bin offen für ein anderes Programm verwenden, aber aufgrund der geschäftlichen Anforderungen, es müsste unterstützte download.
Mit Bezug auf den ersten Vorschlag, das habe ich versucht, aber es ist egal, welche Argumente ich. Auf der zweiten das OS akzeptiert die syntax, aber wenn ich die Ausgabe von $hash, es ist nichts da.
Und was ist dein $PSVersionTable.PSVersion Wert?
Major=3, Minor=0, Build=-1 Revision=-1
Haben Sie andere computer mit der gleichen Plattform, cross-test ?
InformationsquelleAutor Alan Frank | 2015-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich mit PowerShell 4.0 und ich hatte das gleiche problem von null-Ausgabe von Get-FileHash. Die Ursache für mein problem ist anders als der OP, aber ich habe eine Lösung gefunden für mein problem, und ich dachte, ich würde post meine Erkenntnisse für jeden, der kam, um zu dieser Seite zu lösen versucht, das problem der null-Ausgang (oder scheinbar falsche Ausgabe) von Get-FileHash.
Passiert das nur (für mich), wenn der Pfad zu der Zieldatei enthält Klammern [ ] und diejenigen, die Klammern enthalten entweder null-Zeichen, 2 oder mehr Zeichen.
EDIT: ich verstehe jetzt, WARUM dies geschieht. Die Zeichenkette wird als Regulärer Ausdruck (RegEx), so wird in der eckigen Klammer [ ] nehmen Sie auf Ihre spezielle RegEx-Bedeutung. -LiteralPath erzählt PowerShell interpretiert den string als eine einfache übereinstimmung (keine RegEx).
Betrachten Sie die folgende Pfade beziehen sich auf 4 vorhandenen text-Dateien (hypothetisch):
Den folgenden Befehl erzeugt normale Ausgabe:
aber es wird null ausgegeben, wenn die folgenden Befehle:
Dieses Problem kann gelöst werden, indem Sie die-LiteralPath-Schalter. Zum Beispiel:
Variablen erweitert werden, normalerweise, wenn die-LiteralPath-Schalter. Zum Beispiel:
Wenn es genau 1 Zeichen zwischen den Klammern, die Klammern werden ignoriert, wenn mit Get-FileHash.
Betrachten Sie die folgende Pfade beziehen sich auf 3 bestehende text-Dateien (hypothetisch), die jeweils mit eindeutigen hash-Werte:
Get-FileHash interpretiert alle drei der folgenden Befehle in genau der gleichen Art und Weise ( der Pfad wird interpretiert als C:\Test\My Text.txt ) und daher jeder Befehl hat die exakt gleiche ausgegeben wird, obwohl jede Datei mit einem eigenen eindeutigen hash-Wert:
P. S. ich bin ein ganz neuer Programmierer, bitte vergib mir für schlechte Nutzung von Terminologie.
InformationsquelleAutor Zelda64
Get-FileHash, erfordert Windows PowerShell 4.0
Basierend auf Ihre Kommentare, Sie sind in der version 3, die ist Standard auf Win 2012 (nicht R2) Hier ist zu prüfen, wie Sie die PS-version
Können Sie update-PS auf Win 2012 (nicht R2), version 4.0 oder benutze Win 2012 R2
Wenn Sie führen Sie einfach Get-FileHash auf eine PS-version 3-system, das Sie bekommen sollte
Auf niedrigere PS-version mit dieser Funktion können Sie
speichern .ps (z.B. Get-FileHashTSO.ps1) - Datei und rufen Sie es wie folgt
InformationsquelleAutor Tilo