Author Posts

April 5, 2016 at 2:35 am

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
}

April 5, 2016 at 2:54 am

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 }
}

April 5, 2016 at 3:15 am

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.

April 5, 2016 at 5:29 am

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
    }
}

April 5, 2016 at 5:35 am

glad I could help!