Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn, Microsoft.Windows.AD;
- clear
- Function new-password{
- $postboks = Read-host "Skriv postboks"
- $password = read-host "Skriv nytt passord" -assecurestring
- #set-mailbox -identity $postboks -password $password -Force
- Try{
- set-adaccountpassword -identity $postboks -NewPassword $password -reset
- }
- Catch{
- [system.windows.messagebox]::show('Dette passordet er for svakt','Feilmelding')
- postboksMeny
- #Write-host "Dette passordet er for svakt" -ForegroundColor Red
- }
- }
- Function Antall-postbokser{
- clear
- write-host "`n========================= ~ Statistikk " -ForegroundColor White -NoNewline
- write-host "" -ForegroundColor cyan -NoNewline
- write-host " ~ ========================= `n" -ForegroundColor White
- $antall = Get-Mailbox -ResultSize Unlimited | measure-object
- write-output $antall
- [int]$Statistikkvalg = 0
- while($Statistikkvalg -lt 1 -or $Statistikkvalg -gt 1){
- Write-Host "`t1. Tilbake til forrige side" -ForegroundColor Cyan
- Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
- [int]$Statistikkvalg = read-host "Velg et alternativ [0-1]"
- switch($Statistikkvalg){
- 1{statistikk}
- 0{
- clear
- hovedMeny
- }
- }
- }
- }
- Function statistikk{
- clear
- [int]$Statistikkvalg = 0
- while($Statistikkvalg -lt 1 -or $Statistikkvalg -gt 2){
- write-host "`n========================= ~ Statistikk - " -ForegroundColor DarkMagenta -NoNewline
- write-host "" -ForegroundColor cyan -NoNewline
- write-host " ~ ========================= `n" -ForegroundColor DarkMagenta
- Write-Host "`t1. Eksporter til CSV" -ForegroundColor Cyan
- Write-Host "`t2. Antall postbokser" -ForegroundColor Cyan
- Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
- [int]$Statistikkvalg = read-host "Velg et alternativ [0-2]"
- switch($Statistikkvalg){
- 1{Export-mailbox}
- 2{Antall-postbokser}
- 0{
- clear
- hovedMeny
- }
- }
- }
- }
- function hovedMeny{
- [int]$Menyvalg = 0
- while($Menyvalg -lt 1 -or $Menyvalg -gt 3){
- write-host "========================= ~ Drift av Exchange ~ ========================= `n"
- write-host "1. Postbokser"
- write-host "2. Roller"
- write-host "3. Statistikk`n"
- write-host "0. Avslutt`n"
- [int]$Menyvalg = read-host "Velg et alternativ [0-3]"
- switch($Menyvalg){
- 0{Avslutt}
- 1{postboksMeny}
- 2{rolleMeny}
- 3{statistikk}
- default{
- clear
- write-host "Du valgte et tall utenfor menyvalgrensen..." -ForegroundColor yellow
- }
- }
- }
- }
- hovedmeny
- Function Export-mailbox{
- Get-Mailbox | select-object alias, @{label = "emailaddresses";expression = {[string]$_.emailaddresses}} | export-csv C:\get-mailbox.csv
- }
- function postboksMeny{
- clear
- [int]$Postboksvalg = 0
- while($Postboksvalg -lt 1 -or $Postboksvalg -gt 6){
- write-host "`n========================= ~ Drift av Exchange - " -ForegroundColor White -NoNewline
- write-host "Postbokser" -ForegroundColor White -NoNewline
- write-host " ~ ========================= `n" -ForegroundColor White
- write-host "`t1. `tNy postboks med CSV" -ForegroundColor Cyan
- Write-Host "`t2. `tNy delt postboks" -ForegroundColor cyan
- Write-Host "`t3. `tNy kontaktliste" -ForegroundColor Cyan
- Write-Host "`t4. `tSlett postboks" -ForegroundColor Cyan
- Write-Host "`t5. `tGjenopprett postboks" -ForegroundColor Cyan
- Write-Host "`t6. `tNytt Passord til postboks" -ForegroundColor Cyan
- Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
- [int]$Postboksvalg = read-host "Velg et alternativ [0-6]"
- switch($Postboksvalg){
- 1{New-PostboksCSV}
- 2{New-DeltPostboks}
- 3{New-Kontaktliste}
- 4{Remove-postboks}
- 5{Restore-Postboks}
- 6{new-password}
- 0{
- clear
- hovedMeny
- }
- default{
- clear
- write-host "Du valgte et tall utenfor menyvalggrensen..." -ForegroundColor yellow
- }
- }
- }
- }
- function rolleMeny{
- [int]$Rollevalg = 0
- while($Rollevalg -lt 1 -or $Rollevalg -gt 1){
- write-host "`n========================= ~ Drift av Exchange - " -ForegroundColor White -NoNewline
- write-host "Roller" -ForegroundColor White -NoNewline
- write-host " ~ ========================= `n" -ForegroundColor White
- Write-Host "`t1. Ny Rollegruppe" -ForegroundColor Cyan
- Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
- [int]$Rollevalg = read-host "Velg et alternativ fra 0 til 1"
- switch($Rollevalg){
- 1{New-Rollegruppe} #mangler en del funksjoner...
- 0{
- clear
- hovedMeny
- }
- default{
- clear
- write-host "Du valgte et tall utenfor menyvalggrensen..." -ForegroundColor yellow
- }
- }
- }
- }
- #Postboks-funksjoner
- Function New-PostboksCSV{
- #Oppretter en ny postboks fra en CSV-fil
- #Henter ut domene
- $Domene = Get-ADDomain
- #Henter du forest navnet. Det inneholder domenenavnet
- $Forest = $domene.forest
- $Sti = Read-Host "Skriv inn sti til CSV-fil"
- #CSV-filen har parametrene fornavn, etternavn, ou og passord
- #Henter ut informasjonen som er i CSV-filen. Det som skiller de ulike argumentene er ;
- $Brukere = Import-CSV $Sti -Delimiter ";"
- #Går igjennom alle brukerene.
- foreach ($Bruker in $Brukere){
- #Konverterer passordet over til sikker tekst
- $Passord = ConvertTo-SecureString $Bruker.Passord -AsPlainText -force
- #Henter ut etternavn
- $Etternavn = $Bruker.Etternavn
- #Henter ut fornavn
- $Fornavn = $Bruker.Fornavn
- #Henter ut OU-sti
- $OU = $Bruker.OU
- #Får et unikt brukernavn
- [String]$Brukernavn = Set-Brukernavn $Fornavn $Etternavn
- #Tar bort mellomrom ol.
- $Brukernavn = $Brukernavn.Trim()
- #Oppretter fultnavn ut fra fornavn og etternavn
- $FultNavn = $Fornavn + " " + $Etternavn
- #Oppretter postboks
- New-Mailbox -UserPrincipalName $brukernavn@$forest -Alias $Brukernavn –name $FultNavn -OrganizationalUnit $Forest/$OU -Password $Passord -FirstName $Fornavn -LastName $Etternavn -DisplayName $FultNavn -ResetPasswordOnNextLogon $false
- }
- }
- function New-DeltPostboks{
- #Funksjonen oppretter en ny delt epost
- Write-Host "Opprett deltpostboks"
- #Finner et ledig navn
- $navn = Test-PostboksNavn
- #Finner et ledig alias
- #$entydig = Test-PostboksAlias §FJERNER DENNE DA VI IKKE HAR DENEN FUNKSJONEN§
- #Opretter en nydelt postboks
- New-Mailbox -Shared -Name $navn -DisplayName $navn -Alias $navn -ErrorVariable err
- #Godkjenings melding hvis det ikke er noen feil
- if($err[0] -eq $null){
- Write-Host "`nDen delte postboksen $navn ble oprettet" -ForegroundColor Green
- }
- $Valg = Read-Host "Ønsker du å legge til rettigheter (eks: j/n)" #Får valg om en ønsker å gi brukere rettigheter til den delte postboksen
- if($Valg -eq "j"){
- Set-Rettigheter $entydig
- }
- }
- function New-Kontaktliste{
- #Oppretter en ny kontaktliste
- [string]$navn = Read-Host "Skriv inn navn på distribusjonsgruppe"
- if($navn -ne ""){
- #sjekker om kontaklisten finnes fra før
- $sjekkNavn = Get-DistributionGroup -Filter {name -eq $navn}
- }
- #Løkken går så lenge som opprettelsen av kontaktlisten ikke er lik null
- do{
- #Løkken går så lenge navnet finnes fra før
- while($sjekkNavn -ne $null -or $navn -eq ""){
- $navn = Read-Host "Navn finnes allerede. Skriv inn nytt navn på kontaktliste"
- if($navn -ne ""){
- $sjekkNavn = Get-DistributionGroup -Filter {name -eq $navn}
- }
- }
- #Opretter en ny kontaktliste
- New-DistributionGroup -Name $navn -Type Distribution -errorvariable err
- if($err[0] -ne $null){
- $sjekkNavn = "a"
- }
- }while($err[0] -ne $null)
- #Får et valg om en ønsker å legge til brukere til kontaktlisten
- $valg = Read-Host "Ønsker du å legge til brukere i kontaktlisten (eks j/n)`_"
- if($valg -eq "j"){
- Add-BrukerTilKonakListe $navn
- }
- }
- function Remove-postboks{
- #Funksjonen fjerner en postboks
- $sjekk = $false
- [string]$bruker = Read-Host "Skriv inn postboks som skal fjernes"
- #Sjekker om postboksen finnes
- $bruker = Test-Postboks2 $bruker
- do{
- #Får to valg enten fjerne brukeren helt eller deaktivere brukeren
- $valg = Read-Host "1:Fjerne bruker og postboksen til $bruker`n2:Fjerne postboks, men behold $bruker i AD`n3:Avslutt`n"
- if($valg -eq "1"){
- #fjerner brukeren og postboksen
- Remove-Mailbox $bruker
- #sjekker om brukeren er fjernet
- $sjekkBruker = Get-Mailbox -Filter {SamAccountName -eq $bruker}
- if($sjekkBruker -eq $null){
- Write-Host "Brukeren $bruker og tilhørende postboks ble fjernet!" -ForegroundColor Green
- }
- $sjekk = $true
- }elseif($valg-eq"2"){
- #Deakriverer postboksen
- Disable-Mailbox $bruker
- #Sjekker om postboksen er deaktivert
- $sjekkBruker = Get-Mailbox -Filter {SamAccountName -eq $bruker}
- if($sjekkBruker -eq $null){
- Write-Host "Postboksen til $bruker ble deaktivert!" -ForegroundColor Green
- }
- $sjekk =$true
- }
- }while($sjekk -ne $false -or $valg -eq "3")
- }
- function Restore-Postboks{
- #Funksjonen gjenoppretter postbokser som er slettet
- $sjekk = $false
- #Henter ut alle epostdatabasene
- $database = Get-MailboxDatabase
- #Skriver ut alle epostdatabasene med tall foran slik brukeren kan enklere velge database
- for($i = 0; $i-lt $database.length;$i++){
- Write-Host $i ":" $database[$i].Name
- }
- #Sjekker at det er skrevet gyldig verdi
- do{
- $sjekkInt = $false
- $ValgDB = $null
- try{
- [string]$ValgDB = Read-Host "Velg database du ønsker å gjenopprette postboks fra (eks 0)"
- if($ValgDB -eq ""){
- $sjekkInt = $true
- }else{
- #Sjekker om valgDB inneholder tall
- [int]$ValgDB = $ValgDB
- }
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- $sjekkInt = $true
- }
- }while (($ValgDB -gt ($database.length-1)) -or $sjekkInt -eq $true)
- #Henter ut alle postbokser som slettet de siste 30 dager fra valgt database
- $DcPostboks = Get-MailboxStatistics -Database $database[$ValgDB].name | Where-Object {$_.DisconnectDate}
- #Hvis ikke dcpostboks inneholder noe er det ingen postbokser som er slettes de siste 30 dager
- if($DcPostboks -eq $null){
- Write-Host "Det finnes ingen postbokser du kan gjenopprette" -ForegroundColor Yellow
- Start-Sleep -Seconds 2
- }else{
- $bruker = Read-Host "Skriv inn bruker som skal kobles til en postboks"
- #Sjekker om brukeren finnes. Og mottar et objekt med alle egenskapene til en bruker
- $bruker = Test-AdBruker $bruker
- #Skriver ut alle postbokser som er slettet de siste 30 dager med et tall foran slik brukeren enklere kan velge postboks
- for($i = 0; $i-lt $DcPostboks.length;$i++){
- Write-Host $i ":" $DcPostboks[$i].DisplayName
- }
- #Sjekker at det er skrevet gyldig verdi
- do{
- $sjekkInt = $false
- $ValgDcPostboks = $null
- try{
- [string]$ValgDcPostboks = Read-Host "Velg hvilken postboks som skal kobles til bruker " $bruker.DisplayName " (eks 0)" if($ValgDcPostboks -eq ""){
- $sjekkInt = $true
- }else{
- #Sjekker om valgDB inneholder tall
- [int]$ValgDcPostboks = $ValgDcPostboks
- }
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- $sjekkInt = $true
- }
- }while (($ValgDcPostboks -gt $DcPostboks.length-1) -or $sjekkInt -eq $true)
- #Kobler opp en bruker mot en postboks.
- Connect-Mailbox -Identity $DcPostboks[$ValgDcPostboks].DisplayName -Database $database[$ValgDB].Name -User $bruker.UserPrincipalName -Alias $bruker.SamAccountName -ErrorVariable err
- #Sjekker om sammenkoblingen av Active Directory brukeren og postboksen som er slettet gikk bra.
- if($err[0]-eq $null){
- Write-Host "Postboksen ble gjennoprettet til bruker " $bruker.DisplayName -ForegroundColor Green
- }else{
- Write-Host $bruker.DisplayName " mislykket å koble seg opp med postboksen"
- }
- }
- }
- #Rolle-funksjoner
- Function New-Rollegruppe{
- #Funksjonen er en meny som sender videre til funksjoner function New-RolleGruppe{
- #Sjekker om rollegruppen finnes
- [string]$valgtRolle = Test-RolleGruppe
- New-RoleGroup $valgtRolle
- #Sjekk for forlate løkken
- $sjekk = $true
- #Går så lenge som et av valgene blir skrevet inn
- do{
- $valg = Read-Host "1:Legg til roller i rollegruppen`n2:Legg til brukere i rollegruppen`n3:Legg til roller og brukere i rollegruppen`n4:Avslutt`n"
- if($valg-eq"1"){
- Write-Host "Denne funksjonen finnes ikke..." -ForegroundColor Red
- #Legger til rolle i rollegruppen
- #Add-RollerTilRollegruppe $valgtRolle
- #Setter sjekken til usann slik at en kan avslutte løkken
- #$sjekk = $false
- avslutt
- }elseif($valg-eq"2"){
- #Legger til bruker i rollegrupp
- Add-BrukerTilRollegruppe $valgtRolle
- #Setter sjekken til usann slik at en kan avslutte løkken
- $sjekk = $false
- }elseif($valg-eq"3"){
- Write-Host "Denne funksjonen finnes ikke..." -ForegroundColor Red
- #Legger til rolle i rollegruppen
- #Add-RollerTilRollegruppe $valgtRolle
- #Legger til bruker i rollegruppen
- #Add-BrukerTilRollegruppe $valgtRolle
- #Setter sjekken til usann slik at en kan avslutte løkken
- #$sjekk = $false
- avslutt
- }elseif($valg-eq"4"){
- $sjekk = $false
- avslutt
- }
- }while($sjekk-eq $true)
- }
- #Hjelpefunksjoner
- function Confirm-Passord($Passord){
- #Oppretter boolean sjekker for å finne feil ved passordet.
- $sjekkStor = $false
- $sjekkLiten = $false
- $SjekkTall = $false
- #sjekkPassord er sjekken som sier om passordet er godkjent eller ikke
- $sjekkPassord = $true
- #Den første testen sjekker om lengden på passordet er godkjent. Den må være minst 8 tegn langt.
- if($Passord.Length -lt 8){
- Write-Host "Lengden på passordet er for kort" -ForegroundColor Red
- $sjekkPassord = $false
- }else{
- #Vi benytter for-løkke for vi skal gå igjennom alle bokstavene som er i passord teksten.
- for($i=0;$i-lt $Passord.length;$i++){
- #Denne linjen tar ut en og en bokstav. $i variabelen blir inkrementert meden, og dermed går en gjennom hele teksten
- $midlertidig = $Passord.Substring($i,1)
- #Sjekker om bokstaven er stor. I Ascii tabellen er store bokstaver mellom 65 og 90. Vi godkjenner ikke ÆØÅ
- if([char]$midlertidig -ge 65 -and [char]$midlertidig -le 90){
- #Setter sjekkStor til sann
- $sjekkStor = $true
- }
- #Sjekker om bokstaven er liten. I Ascii tabellen er litenbokstav mellom 97
- til 122. Vi godkjenner ikke æøå
- if([char]$midlertidig -ge 97 -and [char]$midlertidig -le 122){
- $sjekkLiten = $true
- }
- #Sjekker om bokstaven er et tall. I Ascii tabellen er tall mellom 48 til 57.
- if([char]$midlertidig -ge 48 -and [char]$midlertidig -le 57){
- $sjekkTall = $true
- }
- }
- #Hvis sjekkStor er usann.
- if($sjekkStor -eq $false){
- Write-Host "Du mangler stor bokstav i passordet" -ForegroundColor Red
- #sjekkPassord settes til usann siden passordet mangler minst storbokstav
- $sjekkPassord = $false
- }
- if($sjekkLiten -eq $false){
- Write-Host "Du mangler liten bokstav i passordet" -ForegroundColor Red
- #sjekkPassord settes til usann siden passordet mangler minst litenbokstav
- $sjekkPassord = $false
- }
- if($SjekkTall -eq $false){
- Write-Host "Du mangler tall i passordet" -ForegroundColor Red
- #sjekkPassord settes til usann siden passordet mangler minst tall
- $sjekkPassord = $false
- }
- }
- #Returnerer sann eller usann
- return $sjekkPassord
- }
- function Get-OU{
- #Funksjonen skriver ut alle OU-ene i domenet
- #Henter ut alle OU-ene i domenet. Alle egenskapene bli hentet ut
- $OU = Get-ADOrganizationalUnit -Filter * -Properties *
- #Oppretter en teller som skal brukes til utskriften for brukeren.
- $teller = 0
- foreach ($i in $OU.DistinguishedName){
- <#
- legger en teller forann utskriften slik at brukeren av scriptet slipper å skrive
- inn heile stien til OU-en.
- I steden for kan brukeren bare skrive tallet forann OU-stien
- #>
- Write-Host $teller : $i
- $teller++
- }
- #Returnerer alle Ou-ene med alle egenskaper
- return $OU
- }
- function Format-Brukernavn($brukernavn){
- #Funksjonen tar imot et brukernavn og formaterer det til små bokstaver og endrer æøå til eoa
- #setter brukernavn til små bokstaver
- $brukernavn=$brukernavn.ToLower()
- #Erstatter æøå med eoa
- $brukernavn=$brukernavn.replace('æ','e')
- $brukernavn=$brukernavn.replace('ø','o')
- $brukernavn=$brukernavn.replace('å','a')
- #Returnere det formatere brukernavnet
- return $brukernavn
- }
- function Set-Brukernavn($fornavn, $etternavn){
- #Funksjonen tar inn fornavn og etternavn og lager et brukernavn ut av de første 3 bokstavene i hver.
- #Setter midlertidig variabelen til $null slik at den ikke inneholder noe fra tidligere.
- #[string]$fornavn = Read-Host "Skriv inn fornavn"
- #[string]$etternavn = Read-Host "Skriv inn etternavn"
- $MidlertidigBrukernavn = $null
- $sjekk = $true
- #If-testene under sjekker om lengden på fornavn og etternavn. Hvis etternavnet erpå to bokstaver blir brukernavent på to bokstaver i stedet for tre
- if($fornavn.length -le 2){
- $brukernavn = $fornavn.substring(0,2)
- }else{
- $brukernavn = $fornavn.substring(0,3)
- }
- if($etternavn.length -le 2){
- $brukernavn += $etternavn.substring(0,2)
- }else{
- $brukernavn += $etternavn.substring(0,3)
- }
- #Telleren bli satt til en. Den skal brukes hvis brukernavnet allerede er i bruk
- $teller = 1
- #Bruker Format-Brukernavn
- $navn = Format-Brukernavn($brukernavn)
- $MidlertidigBrukernavn = $navn
- do{
- #Sjekker om brukernavnet er i bruk. Hvis brukernavn ikke finnes er resultatet
- $null
- $finnes = Get-ADUser -Filter {SamAccountName -eq $MidlertidigBrukernavn}
- #Hvis $finnes er lik $null
- if($finnes -eq $null){
- $sjekk = $false
- $navn = $MidlertidigBrukernavn
- }else{
- #Hvis det er to like brukernavn vil teller bli lagt til slutten avbrukernavnet for å skille de.
- $MidlertidigBrukernavn = $navn + $teller
- #inkrementerer teller slik at en får et annet brukernavn neste gang.
- $teller +=1
- }
- }while($sjekk -eq $true)
- return $navn
- }
- function Set-Rettigheter{
- #Funksjonen lar deg velge mellom å sende på vegne av eller sette tilgang til en delt postboks
- #Param er der slik at en har mulighet til å sende over navnet på den delte eposten.
- param(
- [Parameter(Mandatory=$false)]
- $navn ) do{
- $RettighetMeny = Read-Host "`n1:Sende på vegne av`n2:Sett tilgang til delt postboks`n3:Avslutt`n"
- #Sjekker om $navn har innhold
- if($navn -eq $null -or $navn -eq ""){
- if($RettighetMeny -eq "1"){
- $navn = Read-Host "Skriv inn entydig postboks som skal gi rettigheter"
- #Sjekker om det er et gyldig postboksnavn
- $navn = Test-PostboksNavn $navn
- }elseif($RettighetMeny -eq "2"){
- #Henter ut alle postbokser som er delte
- $navn = Get-Mailbox * | Where-Object {$_.IsShared -eq "True"}
- #Lister ut alle delte postbokser
- for($i=0;$i -lt $navn.length; $i++){ Write-Host $i : $navn[$i].Alias }
- #Sjekker at det blir skrevet inn gyldig verdi
- do{
- $sjekkiInt = $false
- $valgNavn = $null
- #Sjekker om det er tall som er skrevet inn
- try{
- [int]$valgNavn = Read-Host "Velg delt postboks (eks 1)"
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- $sjekkiInt = $true
- }
- }while (($valgNavn -gt ($navn.length-1)) -or ($valgNavn -eq "") -or $sjekkiInt -eq $true)
- #tar det valgte navnet fra objektet og velger det entydige navnet
- Alias
- $navn = $navn[$ValgNavn].Alias
- }
- }else{
- $tempnavn = $navn
- } if($RettighetMeny -eq "1"){
- [string]$bruker = Read-Host "Skriv inn postboks som skal få rettigheter"
- #Sjekker om postboksen eksisterer
- $bruker = Test-PostboksNavn $bruker
- #Benytter send på vegne av funskjonen
- Add-SendPaVegneAv $navn $bruker
- }elseif($RettighetMeny -eq "2"){
- [string]$bruker = Read-Host "Skriv inn postboks som skal få rettigheter"
- #Sjekker om postboksen eksisterer
- $bruker = Test-PostboksNavn $bruker
- #Benytter rettigheter til postboks funksjonen
- Add-RettigheterTilPostboks $navn $bruker
- } if($tempnavn -eq $null){
- $navn = ""
- }
- }while($RettighetMeny -ne "3")
- }
- function Test-AdBruker($bruker){
- #[string]$bruker = Read-Host "Navn på bruker"
- do{
- $sjekk = $false
- #sjekker om brukeren finnes
- $navnSjekk = Get-ADUser -Filter {SamAccountName -eq $bruker} -Properties * -ErrorAction SilentlyContinue
- if($navnSjekk -eq $null){
- [string]$bruker = Read-Host "Brukeren eksisterer ikke. Skriv inn ny"
- }
- #sjekker om brukeren har postboks registrert på seg
- if($navnSjekk.homeMDB -ne $null -and $navnSjekk -ne $null){
- [string]$bruker = Read-Host "Brukeren eksisterer, men det finnes allerede en postboks til brukeren. Skriv inn ny"
- }
- if($navnsjekk.homeMDB -eq $null -and $navnSjekk -ne $null){
- $sjekk = $true
- }
- }while($sjekk -eq $false)
- return navnSjekk
- }
- function Test-Postboks{
- do{
- [string]$entydig = read-host "Skriv inn entydig navn på postboks"
- #la til en endring her fra nme til name
- $navnSjekk = get-mailbox -filter {Name -eq $entydig} -ErrorAction SilentlyContinue
- if($navnSjekk -ne $null){
- write-host "Navnet til postboksen eksistere allerede. Skriv inn nytt" -ForegroundColor Red
- }
- }while($navnSjekk -ne $null -or $entydig -eq "")
- return $entydig
- }
- function Test-Postboks2{
- do{
- $entydig = $bruker
- #[string]$entydig = read-host "Skriv inn entydig navn på postboks"
- #la til en endring her fra nme til name
- $navnSjekk = get-mailbox -filter {Name -eq $entydig} -ErrorAction SilentlyContinue
- if($navnSjekk -eq $null){
- write-host "Navnet til postboksen eksistere ikke. Skriv inn nytt" -ForegroundColor Red
- Remove-postboks
- }
- }while($navnSjekk -ne $null -or $entydig -eq "")
- return $entydig
- }
- function Test-PostboksNavn{
- do{
- [string]$entydig = read-host "Skriv inn entydig navn på postboks"
- #la til en endring her fra nme til name
- $navnSjekk = get-mailbox -filter {Name -eq $entydig} -ErrorAction SilentlyContinue
- if($navnSjekk -ne $null){
- write-host "Navnet til postboksen eksistere allerede. Skriv inn nytt" -ForegroundColor Red
- }
- }while($navnSjekk -ne $null -or $entydig -eq "")
- return $entydig
- }
- function Test-Rollegruppe{
- do{
- [string]$valgtrolle = Read-Host "Navn på Rollegruppe"
- $testRolle = Get-RoleGroup -Filter {name -eq $valgtRolle} -ErrorAction SilentlyContinue
- if($testRolle -ne $null){
- Write-Host "Rollegruppen finnes fra før" -ForegroundColor Red
- }
- }while($testRolle -ne $null -or $valgtrolle -eq "")
- return $valgtrolle
- }
- Function Add-brukerTilRollegruppe($rollegruppe){
- do{
- write-host "velg antall brukere:"
- $valg = Read-Host "1:En bruker`n2:Flere brukere`n3:Avslutt"
- #Hvis brukeren skriver inn avslutt skal en hoppe ut av løkken
- if($valg -eq "1"){
- $bruker = Read-Host "Bruker som skal legges inn i $rollegruppe."
- #Sjekker at brukeren finnes
- $bruker = Test-Postboks $bruker
- #Legger til brukeren til rollegruppen
- Add-RoleGroupMember -Identity $rollegruppe -Member $bruker -ErrorVariable err -ErrorAction SilentlyContinue
- if($err[0]-eq $null){
- Write-Host "$bruker ble lagt til rollegruppen $rollegruppe" -ForegroundColor Green
- }else{
- Write-Host "$bruker ble ikke lagt til rollegruppen $rollegruppe. Kan skyldes at brukeren allerede er medlem av rollegruppen" -ForegroundColor Green
- }
- }elseif($valg -eq "3"){
- avslutt
- }elseif($valg -eq "2"){
- #skriver ut alle OU-ene
- $OU = Get-OU
- #sjekker at gyldig verdi er skrevet inn
- do{
- $sjekkInt = $false
- $valgOU = $null
- [string]$ValgOU = Read-Host "Velg OU-en du ønsker å importere til kontaktlisten (eks 1)"
- <#if($ValgOU -ne $null){
- #Sjekker om innsrevet verdi er tall
- [int]$ValgOU = $ValgOU
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- $sjekkInt = $true
- }else{
- $sjekkInt = $true
- }#>
- }while (($ValgOU -gt $OU.length-1) -or $sjekkInt -eq $true)
- #Først tar en ut alle brukere i en OU. Deretter går en gjennom alle brukerne som har mail i den OU-en, og legger de inn i distribusjonsgruppa
- Get-ADUser -Filter * -SearchBase $OU[$ValgOU].DistinguishedName -Properties *| ForEach-Object {
- #Sjekker om bruker har mail
- if($_.Mail -ne ""){
- #Legger en bruker til distribusjonsgruppa
- Add-RoleGroupMember -Identity $rollegruppe -Member $_.SamAccountName -ErrorVariable error -ErrorAction SilentlyContinue
- }
- if($error[0] -ne $null){
- $utskriftBruker += $_.SamAccountName + "`n"
- }
- }
- Write-Host "Velykket operasjon" -ForegroundColor Green
- write-host "-------------------`n"
- if($error[0] -ne $null) {
- Write-Host "Brukere som feilet`n"
- write-Host $utskriftBruker
- }
- }
- }while($bruker -ne "Avslutt") {}
- }
- function Select-Rollegruppe{ #Henter alle rollegrupper
- $rollegrupper = Get-RoleGroup
- #Skriver ut alle roller med et tall foran slik det er lettere for brukeren å velge rolle
- for($i=0;$i -lt $rollegrupper.length; $i++){
- Write-Host $i ":" $rollegrupper[$i].name
- }
- #Sjekker at det blir skrevet inn gyldig verdi
- do{
- [string]$valgRolle = Read-Host "Skriv inn rollegruppe (eks 1)"
- if($valgRolle -ne ""){
- #Sjekker om inputen til brukeren er et tall
- try{
- [int]$valgRolle = $valgRolle
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- }
- }
- #Sjekker om input
- }while(($valgRolle -gt $rollegrupper.length-1) -or $valgRolle -eq "")
- #Returnerer rollegruppenavnet
- return $rollegrupper[$valgRolle].name
- }
- function Add-SendPaVegneAv($navn, $bruker){
- #[string]$navn = Read-Host "Navn på bruker"
- #[string]$bruker = Read-Host "Navn på bruker"
- Set-Mailbox $navn -GrantSendOnBehalfTo $bruker -ErrorVariable err
- #Hvis en ikke får feilmelding vil en få en utskrift som sier at operasjonen er vellykket.
- if($err[0]-eq $null){
- Write-Host "$bruker kan nå sende på vegne av $navn" -ForegroundColor Green
- }
- #for testing: berado@germanium.local livger@germanium.local
- }
- function Add-RettigheterTilPostboks($navn, $bruker){
- write-host "Eksempel " -ForegroundColor white -BackgroundColor Black -NoNewline
- write-host "Skriv inn navn: livger@germanium. og Skriv inn bruker: berado@germanium.local`n" -ForegroundColor Green
- #[string]$navn = read-host "Skriv inn navn"
- #[string]$bruker = read-host "Skriv inn bruker"
- $rettigheter = @("ChangeOwner","ChangePermission","DeleteItem","ExternalAccount","FullAccess","Rea dPermission","SendAs")
- #Skriver ut alle rettighetene med et tall foran slik at brukeren enkelt kan velge rettighet
- Write-Host $rettigheter[0]
- for($i=0;$i-lt$rettigheter.Length;$i++){
- Write-Host $i":" $rettigheter[$i]
- }
- #Sjekker om det er gyldig input som er skrevet inn
- do{
- $sjekkInt = $false
- $valgrettighet = $null
- #Sjekker om rettigheten er et tall
- try{
- [int]$valgrettighet = Read-Host "Skriv inn ønsket rettighet (eks 1)"
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- $sjekkInt = $true
- }
- }while (($valgrettighet -gt ($rettigheter.length-1)) -or ($valgrettighet -eq "") -or $sjekkInt -eq $true)
- #Setter rettigheten
- Get-Mailbox -Identity $navn | Add-MailboxPermission -User $bruker -AccessRights $rettigheter[$valgrettighet] -InheritanceType All -ErrorVariable err
- #Hvis $err[0] er lik $null har operasjonen gått bra
- if($err[0] -eq $null){
- Write-Host "Velykket operasjon" -ForegroundColor Green
- }
- }
- function Add-BrukerTilKonakListe($navn){
- $sjekk = $false
- #[string]$navn = read-host "Skriv inn navn kontaktlister"
- do{
- #Valg mellom å legge til en bruker eller flere brukere fra en OU
- $Valg = Read-Host "1:En bruker`n2:Flere brukere`n"
- if($Valg -eq "1"){
- [string]$bruker = Read-Host "Skriv inn postboks som skal legges til kontaktlisten"
- #Sjekker om brukeren finnes
- $bruker = Test-PostboksNavn $bruker
- #Tar ut all informasjon om en bruker
- $temp = Get-Mailbox $bruker | select -Property *
- #Legger brukeren inn i kontaktlisten
- Add-DistributionGroupMember -Identity $Navn -Member $temp.UserPrincipalName
- $sjekk = $true
- Write-Host "Brukeren $bruker lagt til distribusjonsgruppen $Navn" -ForegroundColor Green
- }elseif($Valg -eq "2"){
- #skriver ut alle OU-ene
- $OU = Get-OU
- #sjekker at gyldig verdi er skrevet inn
- do{
- $sjekkInt = $false
- $valgOU = $null
- [string]$ValgOU = Read-Host "Velg OU-en du ønsker å importere til kontaktlisten (eks 1)"
- if($ValgOU -ne $null){
- #Sjekker om innskrevet verdi er tall
- try{
- [int]$ValgOU = $ValgOU
- }catch{
- Write-Host "Ugyldig input" -ForegroundColor Red
- $sjekkInt = $true
- }#else{
- # $sjekkInt = $true
- #}
- }
- }while (($ValgOU -gt $OU.length-1) -or $sjekkInt -eq $true)
- #Først tar en ut alle brukere i en OU. Deretter går en gjennom alle brukerene som har mail i den OU-en, og legger de inn i distrubusjonsgruppa
- Get-ADUser -Filter * -SearchBase $OU[$ValgOU].DistinguishedName -Properties *| ForEach-Object {
- #Sjekker om bruker har mail
- if($_.Mail -ne ""){
- #Legger en bruker til distubusjonsgruppa
- Add-DistributionGroupMember -Identity $Navn -Member $_.samaccountname -ErrorVariable err -ErrorAction SilentlyContinue
- } if($err[0] -ne $null){
- $utskriftBruker += $_.SamAccountName + "`n"
- }
- }
- Write-Host "Velykket opperasjon" -ForegroundColor Green
- write-host "-------------------`n"
- if($err[0] -ne $null) {
- Write-Host "Brukere som feilet`n"
- write-Host $utskriftBruker
- }
- $sjekk = $true
- }
- }while($sjekk -eq $false)
- }
- function Avslutt{
- exit(1)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement