【问题标题】:Powershell Script to compare File-Hash from a Stream and published用于比较流中的文件哈希和已发布的 Powershell 脚本
【发布时间】:2020-12-04 03:20:42
【问题描述】:

大家早上好,

我是 powershell 脚本的新手。而且我不知道我做错了什么。

我尝试编写一个 .ps1 脚本来比较流的哈希值。我使用了 microsoft documentation 寻求帮助并将其修改为可运行的脚本,因此我不需要一遍又一遍地编写它。

$wc = [System.Net.WebClient]::new()
$pkgurl = Read-Host "Please enter Package Url: "
$publishedHash = Read-Host "Enter Published Hash: "
$FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
if ($FileHash.Hash -eq $publishedHash) {
    Write-Host "File Hash is equal to published Hash."
}
else {
    Write-Host "File Hash NOT equal to published Hash."
}

当我运行脚本并输入包url和发布的哈希时,程序突然关闭。

请问,有人有什么想法吗?

【问题讨论】:

  • 请不要在您的问题中添加不适当的标签。我刚刚删除了bash,因为您的问题是关于powershell
  • 罗杰!认为是相同的类别。

标签: powershell shell hash get-filehash


【解决方案1】:

脚本结束,因为它无事可做。

您可以在末尾添加read-host 以在关闭之前等待用户输入。 (它不会对输入做任何事情,这只会强制它保持打开状态,直到输入完成。)

或者,如果您想多次使用它而不关闭它,您可以创建一个循环:

$KeepOpen = $true

While($KeepOpen -eq $true){
    $wc = [System.Net.WebClient]::new()
    $pkgurl = Read-Host "Please enter Package Url: "
    $publishedHash = Read-Host "Enter Published Hash: "
    $FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
    if ($FileHash.Hash -eq $publishedHash) {
        Write-Host "File Hash is equal to published Hash."
    }
    else {
        Write-Host "File Hash NOT equal to published Hash."
    }
    $user_input = Read-Host "Please enter Y to run again"
    if($user_input -ne "Y"){
        $KeepOpen = $false
    }
}

这将使脚本保持打开状态,以便您可以看到结果,如果您希望它再次运行,请插入 Y 并按 Enter,您应该回到开始的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多