Как избавиться от строки STDIN при использовании следующей функции в PowerShell и двух других вещах?

296
Vlastimil

Я работаю на Windows 8.1 Pro с PowerShell 5.0.

Допустим, я хочу получить чистую хеш-строку SHA-256 файла.

Я определил следующую функцию:

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

Пример вывода:

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

Это почти работает с моими пожеланиями, могу я спросить:

  1. Как мне избавиться от первой строки поговорки STDIN?

  2. Как извлечь только строку Hash из второй строки?

  3. Как мне преобразовать строку в нижний регистр?

1

1 ответ на вопрос

2
LPChip

Вы можете получить STDIN, используя следующую функцию:

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

Если вы хотите избавиться от лишних пустых строк, которые он создает, используйте следующую функцию:

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

Чтобы получить конечный результат, вы можете использовать следующую функцию:

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