如何在 PowerShell 中使用以下函数和其他两个函数时摆脱 STDIN 字符串?

如何在 PowerShell 中使用以下函数和其他两个函数时摆脱 STDIN 字符串?

我正在使用 PowerShell 5.0 在 Windows 8.1 Pro 上工作。

假设我想要获取一个文件的纯 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. 如何仅从第二行提取哈希字符串?

  3. 如何将字符串转换为小写?

答案1

您可以使用以下函数获取 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()
}

相关内容