#powershell #shell #hash #get-filehash
#powershell #оболочка #хэш #получаем-filehash
Вопрос:
Доброе утро, ребята,
Я новичок в написании сценариев 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. Пожалуйста, не добавляйте неподходящие теги к своим вопросам. Я просто удалил
bash
, о чем ваш вопросpowershell
.
Ответ №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, и вы должны вернуться к тому, с чего начали.