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