Innhold
1 Introduksjon
Cerebrum sin integrasjon med AD har støtte for å starte powershell-skript. Dette kan brukes av de som drifter AD som hooks for å gjøre ekstra endringer på de objektene som Cerebrum oppretter, endrer på og avvikler.
Eksempler på endringer som kan gjøres gjennom script-kjøringen:
- For alle nye brukerkontoer: Opprett mailboks i Exchange og legg til i Lync.
- For brukerkontoer som får oppdatert sitt e-postadresse-attributt (ProxyAddresses): Legg til adressene i Exchange.
Script utføres etter at AD-objektet har blitt endret på.
Skriptet må finnes på Windows-maskinen som Cerebrum kommuniserer med (member server). Cerebrum må få vite hvor skriptet befinner seg, dette skal stå i spesifikasjonen til den spesifikke integrasjonen.
2 Hendelser
Følgende hendelser finnes i AD2-synken, og kan få konfigurert script-kjøring:
- pre_sync
Kjøres ved synk-start, før data hentes fra AD.
Input: Action, UUID
- post_sync
Kjøres ved synk-slutt, etter alle oppdateringer i AD er ferdig.
Input: Action, UUID
- new_object
Kjøres etter et objekt har blitt opprettet i AD.
Input: Action, UUID, Identity
- move_object
Kjøres ved flytting av objekt.
Input: Action, UUID, Identity, Move_from
Merk at move_object utføres før eventuelle objekt-attributter har blitt oppdatert.
- modify_object
Kjøres etter et objekt har fått endret attributter.
Input: Action, UUID, Identity, Changes
Merk at modify_object ikke utføres ved endring av passord.
2.1 Argument
Følgende argument kan bli sendt med scriptet. Merk at ikke alle hendelser vil sende med alle argument.
- -Action
- Identifiserer hendelsen som startet scriptet. Verdien er en av hendelsene som er beskrevet i hendelser.
- -Identity
Identifiserer objektet som en hendelse har påvirket. Kan være DistinguishedName eller ObjectGUID. Verdien her bør kunne benyttes som -Identity-verdi i Get-ADObject og andre AD-cmdlets i PowerShell.
Merk: Ved hendelsen move_object, vil -Identity inneholde objektets nye DistinguishedName.
- -UUID
- En unik verdi som blir generert ved script-kjøring. Denne verdien har ingen bruksområde i AD, men kan benyttes for feilsøking i loggene på Cerebrum-siden.
- -Move_from
- Inneholder objektets gamle DistinguishedName (kun move_object).
- -Changes
- Inneholder en liste over Properties som har blitt endret (kun modify_object).
3 Script
Eksempelscript:
param ( [string]$action = $(throw "-action is required"), [string]$uuid = "no uuid", [string]$identity = $null, [string]$move_from = $null, [string[]]$changes = @() ) $scptname = “remote-crb-script” New-EventLog –LogName Application –Source “$scptname" -ErrorAction 'silentlycontinue' function log # <level> <msg> { Write-EventLog –LogName Application –Source $scptname -ErrorAction 'silentlycontinue' –EventID 1 -EntryType $args[0] –Message “${action}(${uuid}): $($args[1])" } try { $dump = @{Action="$action";Identity="$identity";AttrChanges="$changes";"Old OU"="$move_from";} if ($identity) { $dump += @{Type="$(Get-ADObject -Identity $identity | Select -ExpandProperty objectClass)"} } ConvertTo-Json -Compress $dump log Information "success" } catch { log Error "$_" throw }
Merk at AD-synkroniseringen ikke tar hensyn til om script-kjøringen feiler – eventuelle feil må håndteres på domenekontrolleren. Dersom et script feiler, vil synkroniseringen fortsette som normalt.
Det anbefales at script-kjøring logges, og at loggmeldinger inneholder verdien som angies som -UUID til scriptet.
4 Cerebrum drift
Dette avsnittet er ment for de som drifter Cerebrum.
4.1 Konfigurasjon
Hver synk-konfigurasjon i adconf.py vil ha sin egen, separate script-konfigurasjon. Scripts konfigureres under nøkkelen script, og verdien er en dict som mapper hendelsesnavn til en script-fil som ligger lokalt på domenekontrolleren.
En typisk konfigurasjon vil da se ut som:
SYNCS['my_sync_type'] = { … 'script': { 'new_object': r'c:\my_script.ps1', 'move_object': r'c:\my_script.ps1', }, }
4.2 Logging
- Kjøring av scripts logges med nivå INFO
- Kjøretid logges med nivå DEBUG, dersom script-kjøring er vellykket.
- Output logges med nivå DEBUG4, dersom script-kjøring er vellykket.
- En WARNING logges dersom script-kjøring feiler.