Modul 02 av 6 ★ Høy prioritet ⚡ Interaktiv

AGDLP i praksis
+ PowerShell-automatisering

Nå som du forstår byggeblokkene i AD, skal vi sette dem sammen. Først lærer vi AGDLP – mønsteret som er hele hjertet av tilgangsstyring i AD. Så lærer vi å automatisere det med PowerShell. Sensorveiledningen vet du har dette på fingrene.

~45 minLesetid
12Seksjoner
14Øvelser
100%Eksamensrelevant
I denne modulen
  1. AGDLP – hvorfor må vi ha det?
  2. AGDLP-mønsteret i detaljbygg
  3. Navnekonvensjoner – språk for grupperklassifiser
  4. Velkommen til PowerShellflervalg
  5. Verb-Substantiv – PowerShells DNAmatch
  6. Variabler, parametre, pipeline
  7. Verktøykassen: AD-cmdletenematch
  8. ForEach-Object – iterere over databygg
  9. Import-CSV – data inn i scriptetmatch
  10. If-Else og Try-Catchklassifiser
  11. Pseudokode – bygg et helt scriptbygg
  12. FINAL BOSS – mixed challenge🔥 boss
  13. Oppsummering og nøkkelpunkter
§ 01 — Motivasjon

AGDLP – hvorfor må vi ha det?

Forrige modul lærte du om grupper. Du vet at Global og Domain Local finnes, og du vet at grupper brukes til å gi rettigheter. Men hvorfor trenger vi to forskjellige gruppetyper? Hvorfor ikke bare én?

La oss illustrere problemet med et eksempel. NovaTech har 200 ansatte fordelt på 4 avdelinger, og bedriften har 50 forskjellige mapper på filserveren med ulike tilgangsbehov. Hver ansatt trenger tilgang til 5-10 mapper.

Den naive løsningen – gi hver bruker direkte tilgang til hver mappe – betyr fort:

«Direkte tilgang fra brukere til ressurser er det IT-administrasjon-mareritt skapt av. AGDLP er hvordan voksne mennesker løser problemet.»

AGDLP gir oss en tilgangskjede som separerer to ting som ofte forveksles:

🪪 Hvem du er

  • Brukerkontoen din
  • Rollen din i organisasjonen
  • Avdelingen du jobber i

🔑 Hva du får tilgang til

  • Hvilke filer/mapper
  • Hvilke skrivere
  • Hvilke nivåer av tilgang (lese/skrive)

AGDLP kobler disse to verdenene via grupper, så de kan endres uavhengig av hverandre.

⚡ Forhåndsvarsel
Denne modulen bygger på Modul 1. Hvis du er usikker på forskjellen mellom Global Group og Domain Local Group, er det smart å hoppe tilbake til §6 i Modul 1 først.
§ 02 — Mønsteret

AGDLP-mønsteret i detalj

AGDLP står for Accounts → Global groups → Domain Local groups → Permissions. La oss gå gjennom hvert ledd med Kari Hansen som case:

🪪 A — Account (brukerkontoen)

Vi starter med selve brukeren. Kari har en domenekonto: kari.hansen. Hun jobber i Salg-avdelingen hos NovaTech.

🌐 G — Global Group (rollebasert)

Vi lager en gruppe som representerer rollen Karis er i. Alle som jobber i Salg legges i denne gruppen. Vi kaller den g_salg.

Hvis Kari bytter til Markedsføring senere, flytter vi henne fra g_salg til g_markedsforing – og hennes tilganger oppdateres automatisk. Du trenger ikke å huske hver eneste mappe hun hadde tilgang til.

🏠 DL — Domain Local Group (ressursbasert)

For hver ressurs vi vil dele ut, lager vi en gruppe som representerer den tilgangen. For lese-tilgang til Salg-mappen: dl_salg_filer_read.

Deretter legger vi g_salg som medlem av dl_salg_filer_read. Hele Salg-rollen får dermed tilgangen i ett strøk.

🔐 P — Permissions (faktisk rettighet)

Til slutt setter vi de faktiske NTFS-rettighetene på selve mappen. Vi gir dl_salg_filer_read Read-tilgang til \\fileserver\Salg.

A Account kari.hansen medlem av G Global g_salg (rolle) medlem av DL Domain Local dl_salg_filer_read (ressurs) tildelt P Permissions NTFS Read \\fileserver\Salg
Tilgangskjeden: brukeren arver rettigheter gjennom kjeden – men du administrerer hvert ledd uavhengig.

Magien skjer når en ny ansatt starter. Anta at Ola begynner i Salg:

  1. Opprett brukerkontoen ola.nordmann
  2. Legg ham i g_salg
  3. Det er det. Han har nå tilgang til alle Salg-mapper automatisk.

Hvis Ola slutter, slett kontoen hans (eller deaktiver den). Alle tilgangene fjernes umiddelbart fra hele kjeden, fordi de var aldri tildelt ham direkte.

🎯 Hovedpoenget
G organiserer brukere. Vi har én G-gruppe per rolle/avdeling.
DL organiserer tilgang. Vi har én DL-gruppe per ressurs+rettighet-kombinasjon.
G blir medlem av DL. Dette er koblingen som lar tilgangsstyring skalere.
⚡ Interaktiv øvelse · AGDLP-kjeden sequence builder
Bygg en komplett AGDLP-kjede
Scenario: Utvikling-avdelingen trenger skrivetilgang til mappen \\fileserver\Kode. Klikk komponentene i riktig rekkefølge for å bygge tilgangskjeden.
0 / 4 plassert
NTFS Write på \\fileserver\Kode
g_utvikling
per.hansen (utvikler)
dl_kode_write
Du har det! 🎓 Husk: Account → Global (rolle) → Domain Local (ressurs+rettighet) → Permissions. Den nye utvikleren legges i g_utvikling, og arver automatisk skrivetilgangen til Kode-mappen.
§ 03 — Navngiving

Navnekonvensjoner – språk for grupper

Sensorveiledningen din nevner eksplisitt at du skal «følge fast navnekonvensjon». Dette er ikke kosmetisk – det er essensielt fordi gruppenavn forteller hvem som leser dem hva gruppen gjør, uten å måtte slå opp.

Standard-mønsteret som brukes i forelesningene dine:

🌐 Global groups: g_

  • g_salg – alle som jobber i Salg
  • g_utvikling – alle utviklere
  • g_hr – alle i HR
  • g_ledelse – ledergruppen

🏠 Domain Local: dl_

  • dl_salg_filer_read – lese-tilgang til Salg-mappa
  • dl_salg_filer_write – skrive-tilgang til Salg-mappa
  • dl_skriver_marketing – tilgang til marketing-skriver
  • dl_db_lese – lese-tilgang til database

Legg merke til strukturen i DL-navnene: dl_<ressurs>_<handling>. Dette gjør at du ved et blikk kan se hva gruppen gir tilgang til og på hvilken måte.

💡 Hvorfor prefiks?
Når du senere skal automatisere med PowerShell og bruke Get-ADGroup -Filter 'name -like "g_*"' for å hente alle Global-grupper, så er prefiksen redningen. Den gjør grupper søkbare på en programmatisk måte.
⚡ Interaktiv øvelse · navnekonvensjon drag to bucket
Klassifiser gruppene etter scope
Basert på navnet, plasser hver gruppe i riktig bøtte. Husk: g_ = Global (organiserer brukere), dl_ = Domain Local (gir ressurstilgang).
Klikk gruppe → klikk bøtte
0 / 8 plassert
g_administrasjon
dl_regnskap_filer_write
g_alle_ansatte
dl_skriver_andre_etg
g_it_admin
dl_backup_lese
dl_filserver_admin
g_markedsforing
🌐 Global (rolle)
🏠 Domain Local (ressurs)
Nice! 🎯 Du leser nå gruppenavn som en proff. Når du jobber med AD-strukturen i en bedrift, kan du ved et blikk se hva gruppen gjør – uten å åpne den.
§ 04 — Verktøyet

Velkommen til PowerShell

OK – så vi vet hvordan vi burde sette opp tilgangsstyring (AGDLP). Men hvis vi skal lage 30 brukere, 4 OU-er, 4 Global-grupper, 8 Domain Local-grupper, og koble dem alle riktig... det blir mye klikking i grafiske verktøy.

Dette er hvor PowerShell kommer inn. PowerShell er et automatiseringsspråk som er bygget rett inn i Windows. Du skriver instrukser, kjører dem, og PowerShell utfører dem mye fortere og mer pålitelig enn manuell klikking.

Kjøkken-analogi: Tenk at du skal lage 30 like sandwicher. Du kunne brukt en skje for å smøre majones på hver av dem manuelt – det funker, men tar evigheter. Eller du kunne bygd en pølsemaskin som tar in ingredienser, og automatisk lager sandwicher.

PowerShell er sandwich-maskinen. Du putter inn en CSV-fil med 30 brukere, og ut kommer 30 ferdige AD-brukere – feilfritt, hver gang.

Hva gjør PowerShell spesielt?

📟 Klassisk CMD

  • Tekstbasert (alt er strenger)
  • Begrenset funksjonalitet
  • Vanskelig å iterere over data
  • Ikke designet for systemadministrasjon

⚡ PowerShell

  • Objektorientert (alt er objekter)
  • Tilgang til hele .NET-rammeverket
  • Naturlig pipeline mellom kommandoer
  • Designet for sysadmin og automatisering
⚡ Hvorfor AD ❤️ PowerShell
Husker du fra Modul 1 at alt i AD er objekter? PowerShell er også objektorientert – så når du henter en bruker med Get-ADUser, får du tilbake et faktisk objekt med alle Karis attributter (Department, Email, Manager osv.) som du kan jobbe direkte med. Dette er en match made in heaven.
🧠 Sjekk forståelsen · flervalg
Hva er hovedformålet med å bruke PowerShell for AD-administrasjon?
Riktig! 🎯 Automatisering er nøkkelordet. Det er ikke at du bruke PowerShell – den grafiske konsollen funker fint. Men når du har 30 like oppgaver, vil PowerShell gjøre på 30 sekunder det som manuelt tar 30 minutter.
Tenk på sandwich-analogien. PowerShell er ikke for pene resultater (A) eller umulige oppgaver (C), og du kan administrere AD manuelt (D er feil). Det handler om effektiv automatisering. Svar B.
§ 05 — Syntaksen

Verb-Substantiv – PowerShells DNA

Det fantastiske med PowerShell-kommandoer (kalt cmdlets) er at de følger et helt forutsigbart navnemønster: Verb-Substantiv.

Verbet sier hva du vil gjøre. Substantivet sier hva du vil gjøre det på.

Eksempler
Get-ADUser # Hent en (eller flere) brukere New-ADUser # Opprett en ny bruker Set-ADUser # Endre en eksisterende bruker Remove-ADUser # Slett en bruker New-ADGroup # Opprett en ny gruppe Add-ADGroupMember # Legg bruker i gruppe

De 5 mest brukte verbene er:

🎯 Eksamenstips
Når du skriver pseudokode på eksamen, trenger du ikke huske eksakte cmdlet-navn. Det er nok å si «hent brukeren» eller «opprett gruppen». Men hvis du kan navnemønsteret Verb-Substantiv, viser du at du forstår strukturen, og det imponerer sensor.
⚡ Interaktiv øvelse · cmdlet-gjenkjenning match pairs
Match cmdletene til hva de gjør
Klikk en cmdlet, deretter dens forklaring. Tenk på verbet først (Get/New/Set/Remove/Add), så på substantivet.
0 / 5 matchet
Cmdlet
New-ADUser
Get-ADUser
Add-ADGroupMember
New-ADOrganizationalUnit
Set-ADUser
Hva den gjør
Endre attributter på en eksisterende bruker
Opprett en helt ny brukerkonto i AD
Opprett en ny container for å organisere objekter
Hent en eller flere brukere fra AD
Legg en bruker (eller gruppe) inn i en gruppe
§ 06 — Mekanikken

Variabler, parametre, pipeline

For å skrive nyttige scripts trenger du tre konsepter til. La oss ta dem kjapt.

1. Variabler – lagre verdier

En variabel er et navn vi gir til en verdi vi vil bruke senere. I PowerShell starter alle variabler med $:

$brukernavn = "kari.hansen" $avdeling = "Salg" $passord = "Pa55w0rd!"

2. Parametre – gi cmdleter informasjon

Cmdletene tar in informasjon via parametre. Disse skrives med -Navn verdi:

New-ADUser -Name "Kari Hansen" -SamAccountName $brukernavn -Department $avdeling

Legg merke til at vi bruker variabelen $brukernavn i stedet for å skrive «kari.hansen» direkte. Dette er kjernen i hvorfor variabler er kraftige – vi kan bytte verdier én gang og ha dem brukt mange steder.

3. Pipeline – send data fra én cmdlet til neste

Pipeline (skrevet med |) lar oss sende output fra én kommando som input til den neste. Dette er supernyttig:

# Hent Kari, og endre avdelingen hennes på en gang: Get-ADUser kari.hansen | Set-ADUser -Department "Markedsføring"
💧 Tenk på det som vannrør
Hver cmdlet er som et rør. Get-ADUser henter vann (data), og pipeline-tegnet | sender det videre til neste rør (Set-ADUser) som gjør noe med vannet før det forlater systemet. Du kan koble mange rør sammen.
§ 07 — Toolkit

Verktøykassen: AD-cmdletene

Til eksamen trenger du å kjenne til disse cmdletene – ikke huske eksakt syntaks utenat, men forstå hva de gjør og når de brukes:

Brukeradministrasjon

Opprette en ny bruker
New-ADUser -Name "Per Hansen" ` -SamAccountName "per.hansen" ` -UserPrincipalName "per.hansen@novatech.local" ` -Path "OU=Utvikling,OU=NovaTech-users,DC=novatech,DC=local" ` -AccountPassword (ConvertTo-SecureString "Pa55w0rd!" -AsPlainText -Force) ` -Enabled $true

Backtick (`) på slutten av linja er PowerShells «fortsett på neste linje» – kun for lesbarhet.

Gruppeadministrasjon

Opprette grupper og legge til medlemmer
# Opprett en Global sikkerhetsgruppe New-ADGroup -Name "g_salg" -GroupScope Global -GroupCategory Security ` -Path "OU=Salg,OU=NovaTech-Group,DC=novatech,DC=local" # Opprett en Domain Local gruppe New-ADGroup -Name "dl_salg_filer_read" -GroupScope DomainLocal -GroupCategory Security ` -Path "OU=Salg,OU=NovaTech-Group,DC=novatech,DC=local" # Legg per.hansen i g_utvikling Add-ADGroupMember -Identity "g_utvikling" -Members "per.hansen" # Legg g_salg som medlem av dl_salg_filer_read (AGDLP!) Add-ADGroupMember -Identity "dl_salg_filer_read" -Members "g_salg"

OU-administrasjon

Opprette en OU
New-ADOrganizationalUnit -Name "Salg" ` -Path "OU=NovaTech-users,DC=novatech,DC=local"
📌 Husk parameterne
Du må ikke huske alle parameterne, men disse er nyttige:
-Name: hva objektet skal hete
-Path: hvor i AD-strukturen det skal opprettes (DN-en til container-OU-en)
-SamAccountName: innloggingsnavnet (kortform)
-UserPrincipalName: e-postformat innloggingsnavn
-GroupScope + -GroupCategory: for grupper, spesifiserer scope (Global/DomainLocal) og type (Security/Distribution)
⚡ Interaktiv øvelse · scenario-til-cmdlet match pairs
Match scenario til riktig cmdlet
Tenk: hvilket verb og hvilket substantiv trengs for å løse hvert scenario?
0 / 5 matchet
Scenario
Sjekk om brukeren kari.hansen finnes i AD
Legg den nye utvikleren Per i gruppen g_utvikling
Opprett gruppen dl_filer_marketing_write
Endre Karis avdeling fra Salg til Markedsføring
Lag en ny OU «Konsulenter» under NovaTech-users
Cmdlet
New-ADGroup
Set-ADUser
Get-ADUser
New-ADOrganizationalUnit
Add-ADGroupMember
Du har det! 🔥 Du kan nå velge riktig cmdlet for vanlige AD-oppgaver. Det viktige er Verb-Substantiv-tenkningen: «Skal jeg lage noe nytt? → New». «Skal jeg endre? → Set». «Skal jeg hente? → Get».
§ 08 — Iterasjon

ForEach-Object – iterere over data

OK – så vi vet hvordan vi oppretter én bruker. Men sjeldsynt har vi bare én. Vi har 30 nye ansatte, og vi vil ikke skrive New-ADUser 30 ganger.

Dette er hvor iterasjon kommer inn. Vi sier til PowerShell: «For hvert element i denne lista, gjør X». PowerShell vil utføre X for hvert eneste element, automatisk.

Cmdleten heter ForEach-Object (kortform %). Pseudokoden:

Pseudokode
for hvert element i lista: gjør noe med elementet

I PowerShell:

PowerShell
$brukere = "kari.hansen", "ola.nordmann", "per.hansen" $brukere | ForEach-Object { Write-Host "Behandler: " $_ }

To kritiske ting å forstå her:

🔑 Husk $_
$_ er hjertet i alle PowerShell-loops. Den representerer «det elementet jeg er på akkurat nå». Når du jobber med iterasjon, kommer du til å bruke den hele tiden.
⚡ Interaktiv øvelse · bygg en loop sequence builder
Sett sammen pipelinen riktig
Vi vil opprette tre brukere fra en liste. Klikk komponentene i riktig rekkefølge for å bygge pipelinen.
0 / 4 plassert
}
$nye_brukere = "per", "kari", "ola"
New-ADUser -Name $_ -Enabled $true
$nye_brukere | ForEach-Object {
Pipelinen er bygget! 🌊 Først lagrer vi lista i en variabel. Så sender vi den gjennom pipelinen til ForEach-Object. Inni krøllparentesene refererer $_ til hver enkelt bruker etter tur. Til slutt lukker vi blokken med }.
§ 09 — Data inn

Import-CSV – data inn i scriptet

I virkeligheten kommer brukerinformasjonen sjelden i en kort liste i koden – den kommer i en CSV-fil fra HR-systemet. CSV (Comma-Separated Values) er den enkleste tabellfilformatet som finnes:

ansatte.csv
Name,Username,Department,Title Per Hansen,per.hansen,Utvikling,Senior Developer Kari Olsen,kari.olsen,Salg,Account Manager Ola Nordmann,ola.nordmann,Markedsføring,Marketing Lead Marit Berg,marit.berg,Administrasjon,HR Manager

Første linje er kolonneoverskriftene. Hver påfølgende linje er én rad med data.

Import-CSV leser denne fila og gir oss en samling objekter – ett objekt per rad. Hvert objekt har egenskaper som matcher kolonneoverskriftene:

$ansatte = Import-Csv -Path "C:\data\ansatte.csv" # Nå kan vi iterere: $ansatte | ForEach-Object { Write-Host $_.Name "jobber i" $_.Department }

Legg merke til $_.Name og $_.Department – det er slik vi henter egenskaper fra det nåværende objektet. Punktum mellom variabel og egenskap.

🎯 Eksamensmønster
«Bruk Import-CSV for å lese data fra fil og bruke den som input i scripts» – dette er nøyaktig det som står i pensumguiden din. Et typisk eksamen-scenario: bedriften har en CSV-fil med 30 nye ansatte, og du skal forklare i pseudokode hvordan du oppretter alle i AD.

Mapping fra CSV til AD-bruker

I scriptet bruker du verdiene fra CSV-en til å fylle New-ADUser-parameterne:

$ansatte | ForEach-Object { New-ADUser -Name $_.Name ` -SamAccountName $_.Username ` -Department $_.Department ` -Title $_.Title ` -Enabled $true }
⚡ Interaktiv øvelse · CSV-mapping match pairs
Koble CSV-kolonnen til riktig AD-attributt
Anta CSV-en over. Match kolonnen til hvilken AD-parameter den naturlig kobles til.
0 / 4 matchet
CSV-kolonne
Name
Username
Department
Title
AD-parameter
-Title (Karis stilling/tittel)
-Name (visningsnavnet i AD)
-Department (også brukt til å finne OU)
-SamAccountName (innloggingsnavnet)
§ 10 — Logikk og feilhåndtering

If-Else og Try-Catch

If-Else – betinget logikk

Ofte skal scriptet ditt ta forskjellige valg avhengig av situasjonen. Hva hvis brukeren allerede finnes? Da skal du ikke prøve å opprette den på nytt.

Pseudokode
hvis brukeren finnes: skriv «brukeren finnes allerede» ellers: opprett brukeren
PowerShell
if (Get-ADUser -Filter "SamAccountName -eq '$username'") { Write-Host "Bruker finnes allerede" } else { New-ADUser -Name $navn -SamAccountName $username }

Logikken er enkel: hvis betingelsen i parentesen er sann, kjøres første blokk. Ellers kjøres else-blokken.

Try-Catch – feilhåndtering

Hva skjer hvis CSV-fila ikke finnes? Hva hvis AD-tjenesten er nede? Hva hvis vi prøver å opprette en bruker i en OU som ikke eksisterer? Uten feilhåndtering krasjer scriptet ditt.

Try-Catch er PowerShells måte å si: «Prøv å gjøre dette. Hvis det går galt, gjør dette i stedet for å krasje.»

Pseudokode
prøv: opprett bruker fang feil: skriv feilmelding til logg fortsett til neste bruker
PowerShell
try { New-ADUser -Name $navn -Path $ou_sti Write-Host "Opprettet " $navn -ForegroundColor Green } catch { Write-Host "Feilet for " $navn ":" $_.Exception.Message -ForegroundColor Red }
⚠️ Hvorfor Try-Catch er kritisk
Tenk deg at du oppretter 30 brukere. Den 7. har en feil i CSV-en (kanskje en spesialkarakter). Uten Try-Catch krasjer scriptet på bruker 7, og brukere 8-30 blir aldri opprettet. Med Try-Catch logger du bare feilen og fortsetter – og du ender opp med 29 brukere opprettet og én rapport om hva som gikk galt.
⚡ Interaktiv øvelse · velg riktig logikk drag to bucket
Hvilken kontroll-struktur trenger du for hvert scenario?
For hver situasjon: bør du bruke If-Else (en beslutning) eller Try-Catch (feilhåndtering)?
Klikk scenario → klikk bøtte
0 / 6 plassert
Sjekk om brukeren allerede finnes før vi oppretter
Håndtere at CSV-fila ikke finnes på disken
Velg riktig OU basert på avdelingsnavnet
Logge feil hvis AD-tjenesten er utilgjengelig
Sett -Enabled $true bare hvis ansatt har startdato <= i dag
Fange uventede feil under bulk-oppretting
🔀 If-Else
🛡️ Try-Catch
Glimrende! 🎓 Tommelfingerregel: If-Else = «du vet at en av to ting kommer til å skje» (du tar et valg). Try-Catch = «noe uventet kan gå galt» (du beskytter mot krasj).
§ 11 — Komplett script

Pseudokode – bygg et helt script

Nå skal vi sette alt sammen. Husk det viktigste poenget fra eksamenstekstene dine:

«Det er ikke viktig med korrekt syntaks i denne oppgaven, og en kan forklare hvordan en ville gjort det med egne ord / pseudokode.»

Det betyr at du ikke trenger å huske eksakt PowerShell-syntaks på eksamen. Du trenger å vise at du forstår logikken. La oss bygge et komplett pseudokode-script som dekker et realistisk eksamen-scenario:

📝 Scenario
NovaTech har 30 nye ansatte. Du har en CSV med navn, brukernavn og avdeling. Du skal opprette alle i AD, plassere dem i riktig avdelings-OU, legge dem i riktig avdelings-Global-gruppe, og logge eventuelle feil.

La oss bygge dette steg for steg som pseudokode:

Komplett pseudokode
# 1. Les inn data les CSV-fila "ansatte.csv" inn i variabelen $ansatte # 2. Iterer over hver bruker for hver ansatt i $ansatte: prøv: # 3. Sjekk først om brukeren allerede finnes hvis ansatt finnes i AD: skriv "finnes allerede, hopper over" fortsett til neste # 4. Finn riktig OU basert på avdelingen $ou_sti = "OU=" + ansatt.Department + ",OU=NovaTech-users,DC=novatech,DC=local" # 5. Lag UPN fra brukernavnet $upn = ansatt.Username + "@novatech.local" # 6. Opprett brukeren i riktig OU opprett ny bruker med: navn = ansatt.Name brukernavn = ansatt.Username upn = $upn path = $ou_sti aktivert = ja # 7. Legg i riktig avdelings-Global-gruppe (AGDLP!) legg ansatt.Username inn i gruppen "g_" + ansatt.Department.ToLower() logg "opprettet " + ansatt.Name fang feil: logg feilen til "feil.log" fortsett til neste bruker

Legg merke til at dette pseudokode-scriptet inkluderer alle nøkkelelementene fra pensumguiden:

⚡ Interaktiv øvelse · bygg scriptet sequence builder
Sett pseudokoden i riktig rekkefølge
Klikk linjene i den rekkefølgen de bør utføres for å opprette brukere fra en CSV-fil med riktig feilhåndtering.
0 / 6 plassert
legg bruker inn i riktig Global-gruppe (g_avdeling)
for hver ansatt i $ansatte:
fang feil: logg til feil.log og fortsett
prøv:
$ansatte = Import-CSV "ansatte.csv"
opprett bruker i OU=Department,...
Bravo! 🏆 Du har akkurat bygget strukturen til et eksamen-svar i pseudokode. Hvis du forklarer hvert steg med dine egne ord på eksamen, får du full uttelling – uten å trenge å huske eksakt PowerShell-syntaks.
🎯 Hva sensor leter etter
Når sensor leser pseudokoden din, sjekker hen:
1. Bruker du Import-CSV-prinsippet (eller forklarer at du leser inn data fra fil)?
2. Itererer du over dataene (foreach/loop)?
3. Bygger du riktig OU-sti basert på avdelingen?
4. Følger du AGDLP (legger i Global-gruppe)?
5. Håndterer du feil (try-catch eller om-eksisterer-sjekk)?
6. Skriver du leselig pseudokode som er logisk strukturert?
🔥 § 12 — Final boss

Mixed challenge
– kan du AGDLP og PowerShell nå?

Disse spørsmålene tester den brede forståelsen av AGDLP og PowerShell-logikk. Knus dem alle, og du er klar for både flervalg og essay-oppgaver om automatisering.

⚔️ Boss-spørsmål 1 av 6 · AGDLP-praksis
Du skal gi Markedsføring-avdelingen lesetilgang til en ny prosjektmappe. Hvilken løsning følger AGDLP-prinsippet?
Riktig! 🎯 Account → Global (g_markedsforing) → Domain Local (dl_prosjekt_read) → Permissions. Hver ledd har én ansvarsoppgave, og hele kjeden skalerer fint.
A bryter AGDLP (ingen grupper). B hopper over Domain Local-leddet. D ignorerer hele AGDLP-prinsippet. Svar C følger den rette kjeden.
⚔️ Boss-spørsmål 2 av 6 · Verb-Substantiv
Hvilken cmdlet ville du brukt for å hente en eksisterende bruker fra AD og endre avdelingen hennes?
Spot on! 🔥 Get-ADUser henter, Set-ADUser endrer. Disse kobles ofte med pipeline: Get-ADUser kari | Set-ADUser -Department "Salg".
New er for å opprette nye, Add er for å legge i samlinger (f.eks. gruppemedlem). «Change-ADUser» finnes ikke. Riktig verbpar her er Get → Set. Svar C.
⚔️ Boss-spørsmål 3 av 6 · Iterasjonslogikk
Du har 50 brukere i en CSV-fil. Hva representerer $_ inne i en ForEach-Object-loop?
Helt riktig! 🎯 $_ er «det jeg jobber med akkurat nå». Hvis du har en liste med brukere og itererer, vil $_ være Per i første runde, Kari i andre runde, osv. Du kan hente egenskaper med punktum: $_.Department.
Husk: $_ = «det aktuelle elementet i loopen». Det er ikke hele lista (A), ikke indexen (C), og ikke gjenstående antall (D). Svar B.
⚔️ Boss-spørsmål 4 av 6 · Pseudokode-tolkning
I et bulk-opprettingsscript: hva er fordelen med å bruke Try-Catch rundt opprettingen av hver bruker?
Yes! 💪 Robusthet er nøkkelordet. Uten Try-Catch krasjer hele scriptet på første feil. Med Try-Catch får du en partial success og en feilrapport – mye bedre i praksis.
Try-Catch handler ikke om hastighet eller kryptering. Det handler om robusthet: hvis noe feiler, fortsetter resten av jobben. Svar C.
⚔️ Boss-spørsmål 5 av 6 · CSV-mapping
CSV-fila har kolonnen «Department». Hvordan refererer du til den verdien for den nåværende raden i ForEach-Object-loopen?
Riktig! 🔥 $_ er det aktuelle objektet, og .Department er egenskapen på det objektet (matcher kolonneoverskriften i CSV-en).
Husk syntaksen: $_ for det aktuelle objektet + .EgenskapsNavn for kolonnen. Svar B.
⚔️ Boss-spørsmål 6 av 6 · Komplett scenario
Eksamen-stil scenario: Du skal beskrive i pseudokode hvordan du oppretter 30 nye AD-brukere fra en CSV. Hvilken kombinasjon dekker alle de viktige aspektene sensor leter etter?
Mesterlig! 🎓 Du har dekket: data inn (Import-CSV), iterasjon (ForEach), feilhåndtering (Try-Catch), om-finnes-sjekk (If-Else), oppretting (New-ADUser), og AGDLP-medlemskap (Add-ADGroupMember). Dette er komplett.
A mangler iterasjon og feilhåndtering. B mangler feilhåndtering og AGDLP-koblingen. D er for sletting, ikke oppretting. Svar C er komplett.
💪 6/6? Da har du knust AGDLP + PowerShell-pensumet!
§ 13 — Oppsummering

Nøkkelpunktene du må huske

Det var en stor modul – men du har akkurat dekket hjertet av AD-automatisering. Her er destillasjonen:

📋 Modul 2 – Cheat sheet

→ NESTE

Modul 3: Group Policy – konsept, arv og praksis

Du har nå AD-strukturen og automatiseringen i orden. Tid for det andre høyprioritets-temaet: Group Policy. Vi lærer hvordan GPO-er arves, hvordan de behandles i rekkefølge (LSDOU), og forskjellen på «enforced» og «block inheritance». Klar? 🚀

GPO LSDOU Arv Block Inheritance Enforced User vs Computer config
⌂ DCST1005 ↑ Til toppen