Question about error handling in script

I have made a script that can be used for granting permission to mailboxes. I am not satisfied with how I have delt with error handling in case people enter names for mailboxes or names for security groups. It prompts you if you have a typo once but if you write another typo the script just continues. How can I make this better?

$postboks = Read-Host "Skriv inn navnet på postboksen hvis egenskaper skal endres" $postboks = $postboks.Trim()

#Dette sjekker om postboksen finnes
try {
(Get-Mailbox -identity $postboks)
}

catch {
write-host “Postboksen ‘$postboks’ finnes ikke. Vennligst skriv inn riktig navn.”
$postboks = Read-Host “Skriv inn navnet på postboksen hvis egenskaper skal endres”
$postboks = $postboks.Trim()
}

$sikkerhetsgruppe = Read-Host “`nSkriv inn navn på sikkerhetsgruppen som skal ha rettigheten”
$sikkerhetsgruppe = $sikkerhetsgruppe.Trim()

#Dette sjekker om sikkerhetsgruppen finnes
try {
(Get-Group -identity $sikkerhetsgruppe)
}

catch {
Write-Host “Sikkerhetsgruppen ‘$sikkerhetsgruppe’ finnes ikke. Vennligst skriv inn riktig navn.”
$sikkerhetsgruppe = Read-Host “Skriv inn navn på sikkerhetsgruppen som skal ha rettigheten”
$sikkerhetsgruppe = $sikkerhetsgruppe.Trim()
}

#Dette spør om man skal gi rettigheter til å sende som en postboks/bruker
try {
[ValidateSet(‘Ja’,‘Nei’)]$SendAs = Read-Host “`n Vil du at ‘$sikkerhetsgruppe’ skal ha rettigheter for å sende e-post som ‘$postboks’ (Ja/Nei)?”
}

catch {
write-host “Feilmelding: Du må skrive ‘Ja’ eller ‘Nei’” -foregroundcolor “red”
}

if ($SendAs -eq ‘Ja’) {
Write-Host “’$sikkerhetsgruppe’ gis nå tilgang til å sende e-post på vegne av postboksen ‘$postboks’.”
Set-Mailbox gert.mailbox -GrantSendOnBehalfTo $sikkerhetsgruppe
}

#Dette spør om man skal gi rettigheter til å sende på vegne av en postboks/bruker
try {
[ValidateSet(‘Ja’,‘Nei’)]$BehalfOf = Read-Host “`n Vil du at ‘$sikkerhetsgruppe’ skal ha rettigheter for å sende e-post på vegne av ‘$postboks’ (Ja/Nei)?”
}

catch {
write-host “Feilmelding: Du må skrive ‘Ja’ eller ‘Nei’” -foregroundcolor “red”
}

if ($BehalfOf -eq ‘Ja’) {
Write-Host “’$sikkerhetsgruppe’ gis nå tilgang til å sende e-post som postboksen ‘$postboks’”
Get-Mailbox $postboks | Add-ADPermission -User $sikkerhetsgruppe -ExtendedRights “Send As”
}

Dette spør om man vil gi fulle tilganger til en postboks/bruker

try {
[ValidateSet(‘Ja’,‘Nei’)]$FullAccess = Read-Host “`n Vil du at ‘$sikkerhetsgruppe’ skal ha fulle rettigheter til postboksen ‘$postboks’ (Ja/Nei)?”
}

catch {
write-host “Feilmelding: Du må skrive ‘Ja’ eller ‘Nei’” -foregroundcolor “red”
}

if ($FullAccess -eq ‘Ja’) {
Write-Host “’$sikkerhetsgruppe’ gis nå fulle tilganger til postboksen ‘$postboks’.”
Add-MailboxPermission -Identity $postboks -User $sikkerhetsgruppe -AccessRights Fullaccess -InheritanceType all
}

I suppose you could use a lot of different options to achieve what you need…
Maybe something like this could work for you

while $mailboxerror {
get user input
$mailboxerror = $false
try { get mailbox from user input here }
catch { if errors out set $mailboxerror to $true }
}

Hei,

there is a nice chapter on Error-Handling in the book

Learn PowerShell Toolmaking in a Month of Lunches
by Don Jones and Jeffery D. Hicks
https://www.manning.com/books/learn-powershell-toolmaking-in-a-month-of-lunches

Kan anbefales.

Have mercy with the puppies.

Vennlig hilsen.

Thanks for replies. This did what I was looking for.

$postboksfeil = $false

#Dette sjekker om postboksen finnes
while ($postboksfeil -eq $false) {
    $postboks = Read-Host "Skriv inn navnet på postboksen hvis egenskaper skal endres"

    try { 
        (Get-Mailbox -identity $postboks -ErrorAction stop | Out-Null) 
        $postboksfeil = $true
        Write-Host "Dette fungerte"
    }
    catch { 
        write-host "`nPostboksen '$postboks' finnes ikke. Vennligst skriv inn riktig navn.`n" -foregroundcolor "red"
        #$postboksfeil = $false
    }
}

glad I could help!