Advertisement
Yuven

Untitled

Nov 17th, 2018
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn, Microsoft.Windows.AD;
  2. clear
  3.  
  4.  
  5. Function new-password{
  6.    
  7.  
  8.     $postboks = Read-host "Skriv postboks"
  9.     $password = read-host "Skriv nytt passord" -assecurestring
  10.     #set-mailbox -identity $postboks -password $password -Force
  11.     Try{
  12.     set-adaccountpassword -identity $postboks -NewPassword $password -reset
  13.     }
  14.     Catch{
  15.     [system.windows.messagebox]::show('Dette passordet er for svakt','Feilmelding')
  16.     postboksMeny
  17.    
  18.     #Write-host "Dette passordet er for svakt" -ForegroundColor Red
  19.     }
  20.    
  21.  
  22. }
  23.  
  24. Function Antall-postbokser{
  25.    clear
  26.  
  27.    
  28.         write-host "`n========================= ~    Statistikk  " -ForegroundColor White -NoNewline
  29.         write-host "" -ForegroundColor cyan -NoNewline
  30.         write-host " ~ ========================= `n" -ForegroundColor White
  31.     $antall = Get-Mailbox -ResultSize Unlimited | measure-object
  32.     write-output $antall
  33.  
  34.  
  35.  
  36.      [int]$Statistikkvalg = 0
  37.     while($Statistikkvalg -lt 1 -or $Statistikkvalg -gt 1){
  38.         Write-Host "`t1. Tilbake til forrige side" -ForegroundColor Cyan
  39.         Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
  40.         [int]$Statistikkvalg = read-host "Velg et alternativ [0-1]"
  41.  
  42.         switch($Statistikkvalg){
  43.  
  44.             1{statistikk}
  45.             0{
  46.             clear
  47.             hovedMeny
  48.             }
  49.         }
  50.     }
  51. }
  52.  
  53. Function statistikk{
  54.     clear
  55.     [int]$Statistikkvalg = 0
  56.     while($Statistikkvalg -lt 1 -or $Statistikkvalg -gt 2){
  57.         write-host "`n========================= ~   Statistikk - " -ForegroundColor DarkMagenta -NoNewline
  58.         write-host "" -ForegroundColor cyan -NoNewline
  59.         write-host " ~ ========================= `n" -ForegroundColor DarkMagenta
  60.         Write-Host "`t1. Eksporter til CSV" -ForegroundColor Cyan
  61.         Write-Host "`t2. Antall postbokser" -ForegroundColor Cyan
  62.         Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
  63.         [int]$Statistikkvalg = read-host "Velg et alternativ [0-2]"
  64.  
  65.         switch($Statistikkvalg){
  66.  
  67.             1{Export-mailbox}
  68.             2{Antall-postbokser}
  69.             0{
  70.             clear
  71.             hovedMeny
  72.             }
  73.         }
  74.     }
  75. }
  76.  
  77. function hovedMeny{
  78.     [int]$Menyvalg = 0
  79.     while($Menyvalg -lt 1 -or $Menyvalg -gt 3){
  80.         write-host "========================= ~ Drift av Exchange ~ ========================= `n"
  81.         write-host "1. Postbokser"
  82.         write-host "2. Roller"
  83.         write-host "3. Statistikk`n"  
  84.         write-host "0. Avslutt`n"
  85.  
  86.         [int]$Menyvalg = read-host "Velg et alternativ [0-3]"
  87.  
  88.         switch($Menyvalg){
  89.             0{Avslutt}
  90.             1{postboksMeny}
  91.             2{rolleMeny}
  92.             3{statistikk}
  93.             default{
  94.             clear
  95.             write-host "Du valgte et tall utenfor menyvalgrensen..." -ForegroundColor yellow
  96.             }
  97.         }
  98.     }
  99. }
  100. hovedmeny
  101.  
  102.  
  103.  
  104.  
  105. Function Export-mailbox{
  106.    Get-Mailbox | select-object alias, @{label = "emailaddresses";expression = {[string]$_.emailaddresses}} | export-csv C:\get-mailbox.csv
  107. }
  108.  
  109.  
  110. function postboksMeny{
  111. clear
  112.     [int]$Postboksvalg = 0
  113.  
  114.     while($Postboksvalg -lt 1 -or $Postboksvalg -gt 6){
  115.         write-host "`n========================= ~ Drift av Exchange - " -ForegroundColor White -NoNewline
  116.         write-host "Postbokser" -ForegroundColor White -NoNewline
  117.         write-host " ~ ========================= `n" -ForegroundColor White
  118.         write-host "`t1. `tNy postboks med CSV" -ForegroundColor Cyan
  119.         Write-Host "`t2. `tNy delt postboks" -ForegroundColor cyan
  120.         Write-Host "`t3. `tNy kontaktliste" -ForegroundColor Cyan
  121.         Write-Host "`t4. `tSlett postboks" -ForegroundColor Cyan
  122.         Write-Host "`t5. `tGjenopprett postboks" -ForegroundColor Cyan
  123.         Write-Host "`t6. `tNytt Passord til postboks" -ForegroundColor Cyan
  124.         Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
  125.         [int]$Postboksvalg = read-host "Velg et alternativ [0-6]"
  126.  
  127.         switch($Postboksvalg){
  128.             1{New-PostboksCSV}
  129.             2{New-DeltPostboks}
  130.             3{New-Kontaktliste}
  131.             4{Remove-postboks}
  132.             5{Restore-Postboks}
  133.             6{new-password}    
  134.             0{
  135.             clear
  136.             hovedMeny
  137.             }
  138.             default{
  139.                 clear
  140.                 write-host "Du valgte et tall utenfor menyvalggrensen..." -ForegroundColor yellow
  141.             }
  142.         }
  143.     }
  144. }
  145.  
  146. function rolleMeny{
  147.     [int]$Rollevalg = 0
  148.  
  149.     while($Rollevalg -lt 1 -or $Rollevalg -gt 1){
  150.         write-host "`n========================= ~ Drift av Exchange - " -ForegroundColor White -NoNewline
  151.         write-host "Roller" -ForegroundColor White -NoNewline
  152.         write-host " ~ ========================= `n" -ForegroundColor White
  153.         Write-Host "`t1. Ny Rollegruppe" -ForegroundColor Cyan
  154.         Write-Host "`n`t0. Gå tilbake til hovedmeny" -ForegroundColor Cyan
  155.         [int]$Rollevalg = read-host "Velg et alternativ fra 0 til 1"
  156.  
  157.         switch($Rollevalg){
  158.  
  159.             1{New-Rollegruppe} #mangler en del funksjoner...
  160.             0{
  161.             clear
  162.             hovedMeny
  163.             }
  164.             default{
  165.                 clear
  166.                 write-host "Du valgte et tall utenfor menyvalggrensen..." -ForegroundColor yellow
  167.             }
  168.         }
  169.     }
  170. }
  171.  
  172. #Postboks-funksjoner
  173. Function New-PostboksCSV{
  174. #Oppretter en ny postboks fra en CSV-fil
  175.     #Henter ut domene
  176.     $Domene = Get-ADDomain
  177.     #Henter du forest navnet. Det inneholder domenenavnet
  178.     $Forest = $domene.forest
  179.     $Sti = Read-Host "Skriv inn sti til CSV-fil"
  180.     #CSV-filen har parametrene fornavn, etternavn, ou og passord
  181.  
  182.     #Henter ut informasjonen som er i CSV-filen. Det som skiller de ulike argumentene er ;
  183.     $Brukere = Import-CSV $Sti -Delimiter ";"  
  184.     #Går igjennom alle brukerene.
  185.     foreach ($Bruker in $Brukere){  
  186.         #Konverterer passordet over til sikker tekst
  187.         $Passord = ConvertTo-SecureString $Bruker.Passord -AsPlainText -force
  188.         #Henter ut etternavn
  189.         $Etternavn = $Bruker.Etternavn
  190.         #Henter ut fornavn
  191.         $Fornavn = $Bruker.Fornavn
  192.         #Henter ut OU-sti
  193.         $OU = $Bruker.OU
  194.         #Får et unikt brukernavn
  195.         [String]$Brukernavn = Set-Brukernavn $Fornavn $Etternavn
  196.         #Tar bort mellomrom ol.
  197.         $Brukernavn = $Brukernavn.Trim()    
  198.        
  199.         #Oppretter fultnavn ut fra fornavn og etternavn
  200.         $FultNavn = $Fornavn  + " " + $Etternavn
  201.         #Oppretter postboks
  202.         New-Mailbox -UserPrincipalName $brukernavn@$forest -Alias $Brukernavn –name $FultNavn -OrganizationalUnit $Forest/$OU -Password $Passord -FirstName $Fornavn -LastName $Etternavn -DisplayName $FultNavn -ResetPasswordOnNextLogon $false
  203.     }
  204. }  
  205.  
  206. function New-DeltPostboks{
  207. #Funksjonen oppretter en ny delt epost
  208.     Write-Host "Opprett deltpostboks"
  209.      
  210.     #Finner et ledig navn
  211.     $navn = Test-PostboksNavn
  212.     #Finner et ledig alias
  213.     #$entydig = Test-PostboksAlias  §FJERNER DENNE DA VI IKKE HAR DENEN FUNKSJONEN§
  214.  
  215.     #Opretter en nydelt postboks
  216.     New-Mailbox -Shared -Name $navn -DisplayName $navn -Alias $navn -ErrorVariable err
  217.  
  218.     #Godkjenings melding hvis det ikke er noen feil    
  219.     if($err[0] -eq $null){    
  220.         Write-Host "`nDen delte postboksen $navn ble oprettet" -ForegroundColor Green
  221.     }
  222.      
  223.     $Valg = Read-Host "Ønsker du å legge til rettigheter (eks: j/n)"     #Får valg om en ønsker å gi brukere rettigheter til den delte postboksen    
  224.     if($Valg -eq "j"){    
  225.     Set-Rettigheter $entydig
  226.     }  
  227. }
  228.  
  229. function New-Kontaktliste{
  230.  
  231. #Oppretter en ny kontaktliste
  232.     [string]$navn = Read-Host "Skriv inn navn på distribusjonsgruppe"    
  233.     if($navn -ne ""){
  234.         #sjekker om kontaklisten finnes fra før
  235.         $sjekkNavn = Get-DistributionGroup -Filter {name -eq $navn}
  236.     }
  237.     #Løkken går så lenge som opprettelsen av kontaktlisten ikke er lik null    
  238.     do{
  239.         #Løkken går så lenge navnet finnes fra før        
  240.         while($sjekkNavn -ne $null -or $navn -eq ""){
  241.              
  242.             $navn = Read-Host "Navn finnes allerede. Skriv inn nytt navn på kontaktliste"            
  243.             if($navn -ne ""){
  244.             $sjekkNavn = Get-DistributionGroup -Filter {name -eq $navn}
  245.             }
  246.         }
  247.         #Opretter en ny kontaktliste
  248.         New-DistributionGroup -Name $navn -Type Distribution -errorvariable err        
  249.         if($err[0] -ne $null){
  250.             $sjekkNavn = "a"
  251.         }
  252.     }while($err[0] -ne $null)
  253.      
  254.     #Får et valg om en ønsker å legge til brukere til kontaktlisten    
  255.     $valg = Read-Host "Ønsker du å legge til brukere i kontaktlisten (eks j/n)`_"    
  256.     if($valg -eq "j"){
  257.         Add-BrukerTilKonakListe $navn
  258.     }
  259. }
  260.  
  261. function Remove-postboks{
  262. #Funksjonen fjerner en postboks
  263.     $sjekk = $false
  264.  
  265.     [string]$bruker = Read-Host "Skriv inn postboks som skal fjernes"
  266.     #Sjekker om postboksen finnes
  267.     $bruker = Test-Postboks2 $bruker
  268.      do{
  269.         #Får to valg  enten fjerne brukeren helt eller deaktivere brukeren
  270.         $valg = Read-Host "1:Fjerne bruker og postboksen til $bruker`n2:Fjerne postboks, men behold $bruker i AD`n3:Avslutt`n"
  271.          if($valg -eq "1"){
  272.             #fjerner brukeren og postboksen
  273.             Remove-Mailbox $bruker
  274.              
  275.             #sjekker om brukeren er fjernet
  276.             $sjekkBruker = Get-Mailbox -Filter {SamAccountName -eq $bruker}            
  277.             if($sjekkBruker -eq $null){
  278.                 Write-Host "Brukeren $bruker og tilhørende postboks ble fjernet!" -ForegroundColor Green
  279.             }
  280.             $sjekk = $true
  281.         }elseif($valg-eq"2"){
  282.             #Deakriverer postboksen
  283.             Disable-Mailbox $bruker
  284.  
  285.             #Sjekker om postboksen er deaktivert
  286.             $sjekkBruker = Get-Mailbox -Filter {SamAccountName -eq $bruker}            
  287.             if($sjekkBruker -eq $null){
  288.                 Write-Host "Postboksen til $bruker ble deaktivert!" -ForegroundColor Green
  289.             }
  290.             $sjekk =$true
  291.         }
  292.     }while($sjekk -ne $false -or $valg -eq "3")
  293.      
  294. }
  295.  
  296. function Restore-Postboks{
  297. #Funksjonen gjenoppretter postbokser som er slettet
  298.     $sjekk = $false
  299.  
  300.     #Henter ut alle epostdatabasene  
  301.     $database = Get-MailboxDatabase
  302.  
  303.     #Skriver ut alle epostdatabasene med tall foran slik brukeren kan enklere velge database
  304.     for($i = 0; $i-lt $database.length;$i++){          
  305.     Write-Host $i ":" $database[$i].Name  
  306.     }
  307.  
  308.     #Sjekker at det er skrevet gyldig verdi    
  309.     do{
  310.         $sjekkInt = $false        
  311.         $ValgDB = $null        
  312.         try{
  313.              [string]$ValgDB = Read-Host "Velg database du ønsker å gjenopprette postboks fra (eks 0)"              
  314.              if($ValgDB -eq ""){                  
  315.              $sjekkInt = $true
  316.              }else{
  317.                   #Sjekker om valgDB inneholder tall
  318.                   [int]$ValgDB = $ValgDB
  319.              }
  320.         }catch{
  321.              Write-Host "Ugyldig input" -ForegroundColor Red
  322.              $sjekkInt = $true
  323.         }
  324.            
  325.     }while (($ValgDB -gt ($database.length-1)) -or $sjekkInt -eq $true)  
  326.     #Henter ut alle postbokser som slettet de siste 30 dager fra valgt database
  327.     $DcPostboks = Get-MailboxStatistics -Database $database[$ValgDB].name | Where-Object {$_.DisconnectDate}
  328.  
  329.     #Hvis ikke dcpostboks inneholder noe er det ingen postbokser som er slettes de siste 30 dager
  330.     if($DcPostboks -eq $null){
  331.         Write-Host "Det finnes ingen postbokser du kan gjenopprette" -ForegroundColor Yellow
  332.         Start-Sleep -Seconds 2
  333.     }else{
  334.         $bruker = Read-Host "Skriv inn bruker som skal kobles til en postboks"        
  335.         #Sjekker om brukeren finnes. Og mottar et objekt med alle egenskapene til en bruker
  336.         $bruker = Test-AdBruker $bruker
  337.      
  338.         #Skriver ut alle postbokser som er slettet de siste 30 dager med et tall foran slik brukeren enklere kan velge postboks        
  339.         for($i = 0; $i-lt $DcPostboks.length;$i++){            
  340.         Write-Host $i ":" $DcPostboks[$i].DisplayName  
  341.         }
  342.         #Sjekker at det er skrevet gyldig verdi        
  343.         do{
  344.                 $sjekkInt = $false                
  345.                 $ValgDcPostboks = $null                
  346.                 try{
  347.                     [string]$ValgDcPostboks = Read-Host "Velg hvilken postboks som skal kobles til bruker " $bruker.DisplayName " (eks 0)"                     if($ValgDcPostboks -eq ""){
  348.                         $sjekkInt = $true
  349.                     }else{
  350.                         #Sjekker om valgDB inneholder tall
  351.                         [int]$ValgDcPostboks = $ValgDcPostboks
  352.                     }
  353.                  
  354.                 }catch{
  355.                     Write-Host "Ugyldig input" -ForegroundColor Red
  356.                     $sjekkInt = $true
  357.                 }
  358.         }while (($ValgDcPostboks -gt $DcPostboks.length-1) -or $sjekkInt -eq $true)  
  359.         #Kobler opp en bruker mot en postboks.        
  360.         Connect-Mailbox -Identity $DcPostboks[$ValgDcPostboks].DisplayName -Database $database[$ValgDB].Name -User $bruker.UserPrincipalName -Alias $bruker.SamAccountName -ErrorVariable err
  361.          
  362.         #Sjekker om sammenkoblingen av Active Directory brukeren og postboksen som er slettet gikk bra.        
  363.         if($err[0]-eq $null){
  364.             Write-Host "Postboksen ble gjennoprettet til bruker " $bruker.DisplayName -ForegroundColor Green
  365.              
  366.         }else{
  367.             Write-Host $bruker.DisplayName " mislykket å koble seg opp med postboksen"
  368.         }
  369.     }
  370. }  
  371.  
  372.  
  373. #Rolle-funksjoner
  374. Function New-Rollegruppe{
  375. #Funksjonen er en meny som sender videre til funksjoner function New-RolleGruppe{
  376.     #Sjekker om rollegruppen finnes
  377.     [string]$valgtRolle = Test-RolleGruppe
  378.  
  379.     New-RoleGroup $valgtRolle
  380.     #Sjekk for  forlate løkken
  381.     $sjekk = $true
  382.  
  383.     #Går så lenge som et av valgene blir skrevet inn    
  384.     do{
  385.         $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"        
  386.         if($valg-eq"1"){
  387.             Write-Host "Denne funksjonen finnes ikke..." -ForegroundColor Red
  388.             #Legger til rolle i rollegruppen
  389.             #Add-RollerTilRollegruppe $valgtRolle
  390.             #Setter sjekken til usann slik at en kan avslutte løkken
  391.             #$sjekk = $false
  392.             avslutt
  393.         }elseif($valg-eq"2"){
  394.             #Legger til bruker i rollegrupp
  395.             Add-BrukerTilRollegruppe $valgtRolle
  396.             #Setter sjekken til usann slik at en kan avslutte løkken
  397.             $sjekk = $false
  398.         }elseif($valg-eq"3"){
  399.             Write-Host "Denne funksjonen finnes ikke..." -ForegroundColor Red
  400.             #Legger til rolle i rollegruppen
  401.             #Add-RollerTilRollegruppe $valgtRolle
  402.             #Legger til bruker i rollegruppen
  403.             #Add-BrukerTilRollegruppe $valgtRolle
  404.             #Setter sjekken til usann slik at en kan avslutte løkken
  405.             #$sjekk = $false
  406.             avslutt
  407.         }elseif($valg-eq"4"){
  408.             $sjekk = $false
  409.             avslutt        
  410.             }
  411.     }while($sjekk-eq $true)
  412. }
  413.  
  414.  
  415. #Hjelpefunksjoner
  416. function Confirm-Passord($Passord){
  417.     #Oppretter boolean sjekker for å finne feil ved passordet.
  418.     $sjekkStor = $false
  419.     $sjekkLiten = $false
  420.     $SjekkTall = $false
  421.  
  422.     #sjekkPassord er sjekken som sier om passordet er godkjent eller ikke
  423.     $sjekkPassord = $true
  424.  
  425. #Den første testen sjekker om lengden på passordet er godkjent. Den må være minst 8 tegn langt.
  426.     if($Passord.Length -lt 8){
  427.         Write-Host "Lengden på passordet er for kort" -ForegroundColor Red
  428.         $sjekkPassord = $false
  429.     }else{
  430.         #Vi benytter for-løkke for vi skal gå igjennom alle bokstavene som er i passord teksten.
  431.         for($i=0;$i-lt $Passord.length;$i++){
  432.             #Denne linjen tar ut en og en bokstav. $i variabelen blir inkrementert meden, og dermed går en gjennom hele teksten
  433.             $midlertidig = $Passord.Substring($i,1)
  434.  
  435.             #Sjekker om bokstaven er stor. I Ascii tabellen er store bokstaver mellom 65 og 90. Vi godkjenner ikke ÆØÅ
  436.             if([char]$midlertidig -ge 65 -and [char]$midlertidig -le 90){
  437.                 #Setter sjekkStor til sann
  438.                 $sjekkStor = $true
  439.             }
  440.             #Sjekker om bokstaven er liten. I Ascii tabellen er litenbokstav mellom 97  
  441.             til 122. Vi godkjenner ikke æøå
  442.             if([char]$midlertidig -ge 97 -and [char]$midlertidig -le 122){
  443.                 $sjekkLiten = $true
  444.             }
  445.             #Sjekker om bokstaven er et tall. I Ascii tabellen er tall mellom 48 til 57.
  446.             if([char]$midlertidig -ge 48 -and [char]$midlertidig -le 57){
  447.                 $sjekkTall = $true
  448.             }
  449.         }
  450.                 #Hvis sjekkStor er usann.
  451.         if($sjekkStor -eq $false){
  452.             Write-Host "Du mangler stor bokstav i passordet" -ForegroundColor Red
  453.             #sjekkPassord settes til usann siden passordet mangler minst storbokstav
  454.             $sjekkPassord = $false
  455.         }
  456.         if($sjekkLiten -eq $false){
  457.             Write-Host "Du mangler liten bokstav i passordet" -ForegroundColor Red
  458.             #sjekkPassord settes til usann siden passordet mangler minst litenbokstav
  459.             $sjekkPassord = $false
  460.         }
  461.         if($SjekkTall -eq $false){
  462.             Write-Host "Du mangler tall i passordet" -ForegroundColor Red
  463.             #sjekkPassord settes til usann siden passordet mangler minst tall
  464.             $sjekkPassord = $false
  465.         }
  466.     }
  467.     #Returnerer sann eller usann
  468.     return $sjekkPassord
  469. }
  470.  
  471. function Get-OU{
  472. #Funksjonen skriver ut alle OU-ene i domenet
  473.     #Henter ut alle OU-ene i domenet. Alle egenskapene bli hentet ut
  474.     $OU = Get-ADOrganizationalUnit -Filter * -Properties *
  475.     #Oppretter en teller som skal brukes til utskriften for brukeren.
  476.     $teller = 0
  477.     foreach ($i in $OU.DistinguishedName){
  478.         <#
  479.         legger en teller forann utskriften slik at brukeren av scriptet slipper å skrive
  480.  inn heile stien til OU-en.
  481.         I steden for kan brukeren bare skrive tallet forann OU-stien
  482.         #>
  483.         Write-Host $teller : $i
  484.         $teller++
  485.     }
  486.     #Returnerer alle Ou-ene med alle egenskaper
  487.     return $OU
  488. }
  489.  
  490. function Format-Brukernavn($brukernavn){
  491.     #Funksjonen tar imot et brukernavn og formaterer det til små bokstaver og endrer æøå til eoa
  492.     #setter brukernavn til små bokstaver
  493.     $brukernavn=$brukernavn.ToLower()
  494.     #Erstatter æøå med eoa
  495.     $brukernavn=$brukernavn.replace('æ','e')
  496.     $brukernavn=$brukernavn.replace('ø','o')
  497.     $brukernavn=$brukernavn.replace('å','a')
  498.     #Returnere det formatere brukernavnet    
  499.     return $brukernavn
  500. }
  501.  
  502. function Set-Brukernavn($fornavn, $etternavn){
  503.     #Funksjonen tar inn fornavn og etternavn og lager et brukernavn ut av de første 3 bokstavene i hver.
  504.     #Setter midlertidig variabelen til $null slik at den ikke inneholder noe fra tidligere.
  505.     #[string]$fornavn = Read-Host "Skriv inn fornavn"
  506.     #[string]$etternavn = Read-Host "Skriv inn etternavn"
  507.     $MidlertidigBrukernavn = $null
  508.     $sjekk = $true
  509.  
  510.     #If-testene under sjekker om lengden på fornavn og etternavn. Hvis etternavnet erpå to bokstaver blir brukernavent på to bokstaver i stedet for tre
  511.     if($fornavn.length -le 2){
  512.         $brukernavn = $fornavn.substring(0,2)
  513.     }else{
  514.         $brukernavn = $fornavn.substring(0,3)
  515.     }
  516.     if($etternavn.length -le 2){
  517.         $brukernavn += $etternavn.substring(0,2)
  518.     }else{
  519.         $brukernavn += $etternavn.substring(0,3)
  520.     }
  521.     #Telleren bli satt til en. Den skal brukes hvis brukernavnet allerede er i bruk
  522.     $teller = 1
  523.     #Bruker Format-Brukernavn
  524.     $navn = Format-Brukernavn($brukernavn)
  525.     $MidlertidigBrukernavn = $navn
  526.     do{
  527.         #Sjekker om brukernavnet er i bruk. Hvis brukernavn ikke finnes er resultatet
  528.         $null
  529.         $finnes = Get-ADUser -Filter {SamAccountName -eq $MidlertidigBrukernavn}
  530.         #Hvis $finnes er lik $null
  531.         if($finnes -eq $null){
  532.             $sjekk = $false
  533.             $navn = $MidlertidigBrukernavn
  534.         }else{
  535.             #Hvis det er to like brukernavn vil teller bli lagt til slutten avbrukernavnet for å skille de.
  536.             $MidlertidigBrukernavn = $navn + $teller
  537.             #inkrementerer teller slik at en får et annet brukernavn neste gang.
  538.             $teller +=1
  539.         }
  540.     }while($sjekk -eq $true)
  541.     return $navn
  542. }
  543.  
  544. function Set-Rettigheter{
  545. #Funksjonen lar deg velge mellom å sende på vegne av eller sette tilgang til en delt postboks
  546.     #Param er der slik at en har mulighet til å sende over navnet på den delte eposten.    
  547.     param(
  548.         [Parameter(Mandatory=$false)]
  549.         $navn         )     do{
  550.         $RettighetMeny = Read-Host "`n1:Sende på vegne av`n2:Sett tilgang til delt postboks`n3:Avslutt`n"
  551.         #Sjekker om $navn har innhold        
  552.         if($navn -eq $null -or $navn -eq ""){            
  553.             if($RettighetMeny -eq "1"){
  554.                 $navn = Read-Host "Skriv inn entydig postboks som skal gi rettigheter"
  555.                 #Sjekker om det er et gyldig postboksnavn
  556.                 $navn = Test-PostboksNavn $navn
  557.  
  558.  
  559.             }elseif($RettighetMeny -eq "2"){
  560.                 #Henter ut alle postbokser som er delte
  561.                 $navn = Get-Mailbox * | Where-Object {$_.IsShared -eq "True"}  
  562.                 #Lister ut alle delte postbokser                
  563.                 for($i=0;$i -lt $navn.length; $i++){                     Write-Host $i : $navn[$i].Alias                 }        
  564.                 #Sjekker at det blir skrevet inn gyldig verdi                
  565.                 do{
  566.                     $sjekkiInt = $false
  567.                     $valgNavn = $null
  568.                     #Sjekker om det er tall som er skrevet inn                    
  569.                     try{
  570.                         [int]$valgNavn = Read-Host "Velg delt postboks (eks 1)"
  571.                     }catch{
  572.                         Write-Host "Ugyldig input" -ForegroundColor Red
  573.                         $sjekkiInt = $true
  574.                     }
  575.                
  576.                 }while (($valgNavn -gt ($navn.length-1)) -or ($valgNavn -eq "") -or $sjekkiInt -eq $true)
  577.                 #tar det valgte navnet fra objektet og velger det entydige navnet
  578. Alias
  579.                 $navn = $navn[$ValgNavn].Alias
  580.             }            
  581.         }else{
  582.             $tempnavn = $navn
  583.         }          if($RettighetMeny -eq "1"){  
  584.             [string]$bruker = Read-Host "Skriv inn postboks som skal få rettigheter"
  585.             #Sjekker om postboksen eksisterer
  586.             $bruker = Test-PostboksNavn $bruker
  587.  
  588.             #Benytter send på vegne av funskjonen
  589.             Add-SendPaVegneAv $navn $bruker
  590.         }elseif($RettighetMeny -eq "2"){
  591.             [string]$bruker = Read-Host "Skriv inn postboks som skal få rettigheter"
  592.             #Sjekker om postboksen eksisterer
  593.             $bruker = Test-PostboksNavn $bruker
  594.  
  595.             #Benytter rettigheter til postboks funksjonen
  596.             Add-RettigheterTilPostboks $navn $bruker
  597.         }         if($tempnavn -eq $null){
  598.             $navn = ""
  599.         }
  600.     }while($RettighetMeny -ne "3")
  601. }
  602.  
  603. function Test-AdBruker($bruker){
  604.  
  605.     #[string]$bruker = Read-Host "Navn på bruker"  
  606.          do{
  607.         $sjekk = $false
  608.         #sjekker om brukeren finnes
  609.         $navnSjekk = Get-ADUser -Filter {SamAccountName -eq $bruker} -Properties * -ErrorAction SilentlyContinue        
  610.        
  611.         if($navnSjekk -eq $null){
  612.             [string]$bruker = Read-Host "Brukeren eksisterer ikke. Skriv inn ny"
  613.         }
  614.         #sjekker om brukeren har postboks registrert på seg        
  615.         if($navnSjekk.homeMDB -ne $null -and $navnSjekk -ne $null){
  616.             [string]$bruker = Read-Host "Brukeren eksisterer, men det finnes allerede en postboks til brukeren. Skriv inn ny"
  617.         }                      
  618. if($navnsjekk.homeMDB -eq $null -and $navnSjekk -ne $null){
  619.             $sjekk = $true
  620.         }
  621.          
  622.     }while($sjekk -eq $false)
  623.      return navnSjekk
  624. }
  625.  
  626. function Test-Postboks{
  627.     do{
  628.         [string]$entydig = read-host "Skriv inn entydig navn på postboks"
  629.         #la til en endring her fra nme til name
  630.         $navnSjekk = get-mailbox -filter {Name -eq $entydig} -ErrorAction SilentlyContinue
  631.  
  632.         if($navnSjekk -ne $null){
  633.             write-host "Navnet til postboksen eksistere allerede. Skriv inn nytt" -ForegroundColor Red
  634.         }
  635.     }while($navnSjekk -ne $null -or $entydig -eq "")
  636.     return $entydig
  637. }
  638.  
  639.  
  640. function Test-Postboks2{
  641.     do{
  642.         $entydig = $bruker
  643.         #[string]$entydig = read-host "Skriv inn entydig navn på postboks"
  644.         #la til en endring her fra nme til name
  645.         $navnSjekk = get-mailbox -filter {Name -eq $entydig} -ErrorAction SilentlyContinue
  646.  
  647.         if($navnSjekk -eq $null){
  648.             write-host "Navnet til postboksen eksistere ikke. Skriv inn nytt" -ForegroundColor Red
  649.            
  650.             Remove-postboks
  651.         }
  652.     }while($navnSjekk -ne $null -or $entydig -eq "")
  653.     return $entydig
  654. }
  655.  
  656.  
  657. function Test-PostboksNavn{
  658.     do{
  659.         [string]$entydig = read-host "Skriv inn entydig navn på postboks"
  660.         #la til en endring her fra nme til name
  661.         $navnSjekk = get-mailbox -filter {Name -eq $entydig} -ErrorAction SilentlyContinue
  662.  
  663.         if($navnSjekk -ne $null){
  664.             write-host "Navnet til postboksen eksistere allerede. Skriv inn nytt" -ForegroundColor Red
  665.         }
  666.     }while($navnSjekk -ne $null -or $entydig -eq "")
  667.     return $entydig
  668. }
  669.  
  670. function Test-Rollegruppe{    
  671.     do{
  672.         [string]$valgtrolle = Read-Host "Navn på Rollegruppe"
  673.         $testRolle = Get-RoleGroup -Filter {name -eq $valgtRolle} -ErrorAction SilentlyContinue          
  674.             if($testRolle -ne $null){
  675.                 Write-Host "Rollegruppen finnes fra før" -ForegroundColor Red
  676.             }
  677.  
  678.     }while($testRolle -ne $null -or $valgtrolle -eq "")    
  679.     return $valgtrolle
  680. }
  681.  
  682. Function Add-brukerTilRollegruppe($rollegruppe){
  683.     do{
  684.         write-host "velg antall brukere:"
  685.         $valg = Read-Host "1:En bruker`n2:Flere brukere`n3:Avslutt"          
  686.         #Hvis brukeren skriver inn avslutt skal en hoppe ut av løkken
  687.         if($valg -eq "1"){
  688.             $bruker = Read-Host "Bruker som skal legges inn i $rollegruppe."
  689.             #Sjekker at brukeren finnes
  690.             $bruker = Test-Postboks $bruker
  691.             #Legger til brukeren til rollegruppen
  692.             Add-RoleGroupMember -Identity $rollegruppe -Member $bruker -ErrorVariable err -ErrorAction SilentlyContinue            
  693.                 if($err[0]-eq $null){
  694.                 Write-Host "$bruker ble lagt til rollegruppen $rollegruppe" -ForegroundColor Green
  695.                 }else{
  696.                     Write-Host "$bruker ble ikke lagt til rollegruppen $rollegruppe. Kan skyldes at brukeren allerede er medlem av rollegruppen" -ForegroundColor Green            
  697.                     }
  698.         }elseif($valg -eq "3"){
  699.             avslutt
  700.         }elseif($valg -eq "2"){
  701.             #skriver ut alle OU-ene
  702.             $OU = Get-OU
  703.             #sjekker at gyldig verdi er skrevet inn            
  704.             do{
  705.                 $sjekkInt = $false              
  706.                 $valgOU = $null
  707.                 [string]$ValgOU = Read-Host "Velg OU-en du ønsker å importere til kontaktlisten (eks 1)"
  708.  
  709.                 <#if($ValgOU -ne $null){
  710.                     #Sjekker om innsrevet verdi er tall                    
  711.  
  712.                     [int]$ValgOU = $ValgOU
  713.                     }catch{
  714.                         Write-Host "Ugyldig input" -ForegroundColor Red
  715.                         $sjekkInt = $true
  716.                 }else{
  717.                     $sjekkInt = $true
  718.                     }#>
  719.                  
  720.             }while (($ValgOU -gt $OU.length-1) -or $sjekkInt -eq $true)  
  721.             #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
  722.                 Get-ADUser -Filter * -SearchBase $OU[$ValgOU].DistinguishedName -Properties *| ForEach-Object {
  723.                     #Sjekker om bruker har mail                
  724.                     if($_.Mail -ne ""){
  725.                         #Legger en bruker til distribusjonsgruppa
  726.                          Add-RoleGroupMember -Identity $rollegruppe -Member $_.SamAccountName -ErrorVariable error -ErrorAction SilentlyContinue
  727.                     }  
  728.                     if($error[0] -ne $null){
  729.                         $utskriftBruker += $_.SamAccountName + "`n"
  730.                     }
  731.                 }
  732.                 Write-Host "Velykket operasjon" -ForegroundColor Green            
  733.                 write-host "-------------------`n"            
  734.                 if($error[0] -ne $null) {
  735.                     Write-Host "Brukere som feilet`n"                
  736.                     write-Host $utskriftBruker
  737.                 }
  738.                        
  739.             }
  740.         }while($bruker -ne "Avslutt") {}
  741.     }
  742.  
  743. function Select-Rollegruppe{     #Henter alle rollegrupper
  744.     $rollegrupper = Get-RoleGroup
  745.  
  746.     #Skriver ut alle roller med et tall foran slik det er lettere for brukeren å velge rolle
  747.     for($i=0;$i -lt $rollegrupper.length; $i++){
  748.     Write-Host $i ":" $rollegrupper[$i].name
  749.     }
  750.    
  751.     #Sjekker at det blir skrevet inn gyldig verdi    
  752.     do{
  753.        [string]$valgRolle = Read-Host "Skriv inn rollegruppe (eks 1)"        
  754.             if($valgRolle -ne ""){
  755.             #Sjekker om inputen til brukeren er et tall            
  756.                 try{
  757.                 [int]$valgRolle = $valgRolle
  758.                 }catch{
  759.                  Write-Host "Ugyldig input" -ForegroundColor Red
  760.             }
  761.         }
  762.     #Sjekker om input  
  763.     }while(($valgRolle -gt $rollegrupper.length-1) -or $valgRolle -eq "")      
  764.     #Returnerer rollegruppenavnet    
  765.     return $rollegrupper[$valgRolle].name
  766. }
  767.  
  768. function Add-SendPaVegneAv($navn, $bruker){
  769.  
  770.     #[string]$navn = Read-Host "Navn på bruker"
  771.     #[string]$bruker = Read-Host "Navn på bruker"
  772.  
  773.     Set-Mailbox $navn -GrantSendOnBehalfTo $bruker -ErrorVariable err  
  774.     #Hvis en ikke får feilmelding vil en få en utskrift som sier at operasjonen er vellykket.
  775.     if($err[0]-eq $null){
  776.         Write-Host "$bruker kan nå sende på vegne av $navn" -ForegroundColor Green
  777.     }
  778.     #for testing: berado@germanium.local livger@germanium.local
  779. }
  780.  
  781. function Add-RettigheterTilPostboks($navn, $bruker){
  782. write-host "Eksempel " -ForegroundColor white -BackgroundColor Black -NoNewline
  783. write-host "Skriv inn navn: livger@germanium. og Skriv inn bruker: berado@germanium.local`n" -ForegroundColor Green
  784. #[string]$navn = read-host "Skriv inn navn"
  785. #[string]$bruker = read-host "Skriv inn bruker"      
  786.     $rettigheter = @("ChangeOwner","ChangePermission","DeleteItem","ExternalAccount","FullAccess","Rea dPermission","SendAs")
  787.     #Skriver ut alle rettighetene med et tall foran slik at brukeren enkelt kan velge rettighet
  788.     Write-Host $rettigheter[0]
  789.     for($i=0;$i-lt$rettigheter.Length;$i++){
  790.         Write-Host $i":" $rettigheter[$i]
  791.     }
  792.      
  793.     #Sjekker om det er gyldig input som er skrevet inn      
  794.    
  795.     do{
  796.         $sjekkInt = $false
  797.         $valgrettighet = $null
  798.         #Sjekker om rettigheten er et tall        
  799.        
  800.         try{
  801.             [int]$valgrettighet = Read-Host "Skriv inn ønsket rettighet (eks 1)"
  802.         }catch{
  803.             Write-Host "Ugyldig input" -ForegroundColor Red
  804.             $sjekkInt = $true
  805.         }
  806.     }while (($valgrettighet -gt ($rettigheter.length-1)) -or ($valgrettighet -eq "") -or $sjekkInt -eq $true)
  807.     #Setter rettigheten
  808.     Get-Mailbox -Identity $navn | Add-MailboxPermission -User $bruker -AccessRights $rettigheter[$valgrettighet] -InheritanceType All -ErrorVariable err
  809.  
  810.     #Hvis $err[0] er lik $null har operasjonen gått bra    
  811.     if($err[0] -eq $null){
  812.         Write-Host "Velykket operasjon" -ForegroundColor Green
  813.     }
  814. }
  815.  
  816. function Add-BrukerTilKonakListe($navn){
  817. $sjekk = $false
  818. #[string]$navn = read-host "Skriv inn navn kontaktlister"        
  819. do{
  820.         #Valg mellom å legge til en bruker eller flere brukere fra en OU
  821.   $Valg = Read-Host "1:En bruker`n2:Flere brukere`n"                
  822.    if($Valg -eq "1"){
  823.          
  824.             [string]$bruker = Read-Host "Skriv inn postboks som skal legges til kontaktlisten"
  825.             #Sjekker om brukeren finnes
  826.             $bruker = Test-PostboksNavn $bruker
  827.  
  828.             #Tar ut all informasjon om en bruker
  829.             $temp = Get-Mailbox $bruker | select -Property *
  830.              
  831.             #Legger brukeren inn i kontaktlisten
  832.             Add-DistributionGroupMember -Identity $Navn -Member $temp.UserPrincipalName
  833.            
  834.             $sjekk = $true
  835.  
  836.             Write-Host "Brukeren $bruker lagt til distribusjonsgruppen $Navn" -ForegroundColor Green
  837.         }elseif($Valg -eq "2"){
  838.             #skriver ut alle OU-ene
  839.             $OU = Get-OU
  840.  
  841.             #sjekker at gyldig verdi er skrevet inn
  842.             do{
  843.                 $sjekkInt = $false
  844.                 $valgOU = $null
  845.                 [string]$ValgOU = Read-Host "Velg OU-en du ønsker å importere til  kontaktlisten (eks 1)"
  846.                  if($ValgOU -ne $null){                    
  847.                  #Sjekker om innskrevet verdi er tall                    
  848.                  try{
  849.                         [int]$ValgOU = $ValgOU
  850.                     }catch{
  851.                         Write-Host "Ugyldig input" -ForegroundColor Red
  852.                         $sjekkInt = $true                    
  853.                         }#else{
  854.                      #   $sjekkInt = $true
  855.                     #}
  856.                 }
  857.             }while (($ValgOU -gt $OU.length-1) -or $sjekkInt -eq $true)
  858.  
  859.             #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
  860.             Get-ADUser -Filter * -SearchBase $OU[$ValgOU].DistinguishedName -Properties *| ForEach-Object {
  861.                 #Sjekker om bruker har mail                
  862.                 if($_.Mail -ne ""){
  863.                     #Legger en bruker til distubusjonsgruppa
  864.                     Add-DistributionGroupMember -Identity $Navn -Member $_.samaccountname -ErrorVariable err -ErrorAction SilentlyContinue
  865.                 }                  if($err[0] -ne $null){
  866.                     $utskriftBruker += $_.SamAccountName + "`n"
  867.                 }
  868.             }
  869.             Write-Host "Velykket opperasjon" -ForegroundColor Green            
  870.             write-host "-------------------`n"            
  871.             if($err[0] -ne $null) {
  872.                 Write-Host "Brukere som feilet`n"                
  873.                 write-Host $utskriftBruker
  874.             }
  875.                        
  876.             $sjekk = $true
  877.         }
  878.     }while($sjekk -eq $false)
  879. }    
  880.  
  881. function Avslutt{
  882.     exit(1)
  883. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement