Сценарий Powershell для сравнения хэша файла из потока и опубликованного

Доброе утро, парни,

Я новичок в написании сценариев 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-адрес пакета и опубликованный хэш, программа внезапно внезапно закрывается.

Пожалуйста, у кого-нибудь есть идея?

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, и вы должны вернуться туда, где вы начали.

Другие вопросы по тегам