Wie kann der STDIN-String entfernt werden, während die folgende Funktion in PowerShell und zwei andere Dinge verwendet werden?

462
Vlastimil

Ich arbeite an Windows 8.1 Pro mit PowerShell 5.0.

Nehmen wir an, ich möchte einen reinen SHA-256-Hash-String einer Datei erhalten.

Ich habe folgende Funktion definiert:

function sha256sum([string]$arg) { Get-FileHash -Algorithm SHA256 $arg | Format-List | grep Hash } 

Beispielausgabe:

PS C:\Users\Vlastimil\Downloads> sha256sum .\adr.exe STDIN Hash : B3729AFDB438A1B264D75003379DC8ADD2DADDF91D01674F2844DB114D22D71B 

Es funktioniert fast nach meinen Wünschen, könnte ich fragen:

  1. Wie kann ich die erste Zeile loswerden STDIN?

  2. Wie extrahiere ich nur den Hash-String aus der zweiten Zeile?

  3. Wie konvertiere ich die Zeichenfolge in Kleinbuchstaben?

1

1 Antwort auf die Frage

2
LPChip

Sie können das STDIN mit der folgenden Funktion abrufen:

function sha256sum([string]$arg) { Get-FileHash -Algorithm SHA256 $arg | Format-List Hash } 

Wenn Sie die zusätzlichen leeren Zeilen entfernen möchten, verwenden Sie die folgende Funktion:

function sha256sum([string]$arg) { (Get-FileHash -Algorithm SHA256 $arg | Format-List Hash | Out-String).Trim() } 

Um das Endergebnis zu erhalten, sollten Sie jedoch die folgende Funktion verwenden:

function sha256sum([string]$arg) { $Hash = Get-FileHash -Algorithm SHA256 $arg | Select -ExpandProperty Hash $Hash.ToLower() }