Zoals anderen aangeven is het vooral een kwestie van schaal, voor 5 man heeft het weinig zin (niet anders dan een technische training voor jezelf) maar rond de 200 man ligt ongeveer het punt waarin het goedkoper/beter is om het met een extern product te kiezen.
Maandenlang bezig zijn met een degelijk script? Komop ..
Met een beetje testen en finetunen kom je dan uit op 1 volle werkdag, geen maanden werk.
Misschien komt ons beeld van de functie van dat script niet overeen. Ik zie het als totaal oplossing voor user provisioning; het aanmaken, bijwerken en verwijderen van gebruikeraccounts.
Met dat in het achterhoofd vind ik de inschatting van die ene dag het schoolvoorbeeld van onderschatten van de complexiteit van de taak. Complexiteit zoals:
- Gebruikers met een conflicterende naam (Bert en Bart de Vries)
- Gebruikers met dezelfde naam
- Gebruikers die trouwen en weer scheiden en dus hun naam verandert, en de gebruikersnaam verandert (en dus bijv home directory en er komt een exchange alias bij)
- Iemand die weer in dienst komt voordat de vorige gebruikersnaam werd gearchiveerd.
- Is er in het HR systeem al een legale (dus geen BSN) uniek personeelsnummer dat niet verandert als iemand van een tijdelijk contract naar een vast contract gaat? dit is vaker niet, dan wel het geval.
Bovendien heb ik in de 10 jaar dat ik deze opdracht tegenkom nog nooit een foutloos gevulde HR database gezien, dat komt boven water bij een klus als deze. - Het automatisch lid maken van bepaalde AD groepen op basis van een combinatie van de functie en afdeling.
Dat doe je in een dag? of bouw je een scriptje in één dag dat enkele eigenschappen doorvoert en zodra er iets geks in in de werknemer data zit niet meer werkt, of veel erger, AD overhoop haalt?
Bedenk je het moment waarop je het script voor het eerst laat synchroniseren. Voordat je dat wil doen, moet er een log functie inzitten die elke aanpassing logt, zodat je exact weet wat er gaat gebeuren als je het in productie start. Het bouwen van die log functie, analiseren van de output en oplossing van de gevonden problemen zit ook binnen diezelfde ene dag?
Nog een ander ding aan TS: Gebruik nooit een csv (plain text) met personeelsdata. Spreek vanuit het script een view aan in de HR DB of de meeste (grotere) HR oplossingen hebben een API waar je tegen aan kan scripten.
Het als enige hebben van kennis van een essentieel proces binnen een bedrijf maakt iets niet meteen waardeloos maar het vormt een risico. Als na het vertrek van diegene het script een foutmelding geeft, grijpen ze mis.
Hoe groter en langer een script is, hoe minder waardevol in-script-comments zijn, omdat ze alleen lokale functies beschrijven en bijna nooit inzicht geven in de opbouw van het script. ik ben nog nooit script documentatie gelezen die dat probleem adresseert. Ook die documentatie schrijf je in diezelfde dag?
Bovendien worden er met zon script extra eisen gesteld aan diegene die taak van de vertrokken beheerder overneemt, geavanceerd scripter. Dat maakt het vervullen van een vacature nog moeilijker.
Dat risico loopt men als er custom one-of-a-kind script oplossing wordt gebruikt.
Ik ken de kracht van powershell wel, ik heb enkele jaren geleden voor het verschijnen van DSC een oplossing gebouwd voor het deployen van 20+ Hyper-V clusters. waarin storage, netwerkkaarten, virtual switches, hardware model afhankelijkheid, tussentijds rebooten, alles volledig automatisch geconfigureerd, en bij elke stap zat fout afvanging en een resume functie.
Echter na het inrichten van deze 20+ clusters vervult dit script geen grote rol meer. Het sporadisch opnieuw opbouwen van een server na het vervangen van een blade server doet dat script prima. maar verder is het script dood.
Na die opdracht ben ik bij een andere opdrachtgever ander werk gaan doen en heb nooit 1 telefoontje gehad met vragen over dat script. Het maken van dat script kostte 3 maanden werk.
Scripting is voor mij een tool om een eindige functie te vergemakkelijken zoals een migratie, permanent gebruik van scripts vermijd ik. Permanente scripts worden al snel een houtje-touwtje oplossing, die bij de eerste de beste migratie/upgrade stuk gaan.