用于比较流中的文件哈希和已发布的 Powershell 脚本

Powershell Script to compare File-Hash from a Stream and published

大家早上好,

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

我尝试编写一个 .ps1 脚本来比较流的哈希值。我使用了微软 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和发布的Hash时,程序突然突然关闭

拜托,有人有想法吗?

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

您可以在最后添加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 并按回车键,您应该会回到开始的位置。