Como se livrar da string STDIN ao usar a seguinte função no PowerShell e duas outras coisas?

1

Estou trabalhando no Windows 8.1 Pro com o PowerShell 5.0.

Digamos que eu queira obter uma string hash SHA-256 pura de um arquivo.

Eu defini a seguinte função:

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

Exemplo de saída:

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

Está quase dando certo, eu poderia perguntar:

  1. Como faço para me livrar da primeira linha dizendo STDIN ?

  2. Como eu extraio apenas a string Hash da segunda linha?

  3. Como faço para converter a string para minúscula?

por Vlastimil 10.08.2017 / 10:13

1 resposta

2

Você pode obter o STDIN usando a seguinte função:

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

Se você quiser se livrar das linhas extras vazias produzidas, use a seguinte função:

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

Para obter o resultado final, você vai querer usar a seguinte função:

function sha256sum([string]$arg) {
    $Hash = Get-FileHash -Algorithm SHA256 $arg | Select -ExpandProperty Hash
    $Hash.ToLower()
}
    
por 10.08.2017 / 10:29