Gå til innhold

Noen spørsmål rundt generering av feilmeldinger og "gjenbruk" av kode i PowerShell


Anbefalte innlegg

Jeg har laget et script som skal gi tilganger til postbokser på Excahne 2013. Dette har jo blitt fjernet fra GUI så da er PowerShell svaret. 

 

Jeg er ikke fornøyd med feilhåndteringen i scriptet og er på jakt etter måter å forbedre det på. Det er lagt inn kvalitetssjekk på om en har skrevet inn navn på sikkerhetsgrupper og postbokser som faktisk fungerer. Per se "hopper" scriptet videre selv når en skriver dette feil 2. gang. Hvordan får jeg det på en elegant måte å stoppe opp uansett hvor mange ganger navnet skrives feil?

Fra PHP er jeg vandt til å ha en egen funksjon som tar seg av feilmeldinger. Jeg har ikke tatt meg tiden til å lage tilsvarende her siden dette i utgangspunktet ikke er noe stort script. 

Scriptet er nedenfor. 

 

 

$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
}
Lenke til kommentar
  • 1 måned senere...
Videoannonse
Annonse
$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()
}

Tror det letteste er å pakke denne koden inn en funksjon.

 

Eksempel:

#Dette sjekker om postboksen finnes

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

    try {
        (Get-Mailbox -identity $postboks)
    }
 
    catch {
        write-host "Postboksen '$postboks' finnes ikke. Vennligst skriv inn riktig navn."
        checkPostboxExcistence 
        #Kaller funksjon igjen hvis Get-Mailbox feiler.
        #Skriptet vil med andre ord ikke kjøre videre før Get-Mailbox er OK.
    }
}

checkPostboxExcistence
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...