0

早上好家伙,

我是 powershell 脚本的新手。而且我无法弄清楚我做错了什么。

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

$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 和发布的哈希时,程序突然关闭。

拜托,有人有想法吗?

4

1 回答 1

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,您应该回到开始的位置。

于 2020-08-14T08:53:01.277 回答