I did a blog post, way back to create new users in AD using already existing user as a template, but many people commented about using the template didn't copy the Home Directory, logon script path, group membership etc. So finally I tried my hands on writing a Function which does a better job at this. The idea is to write a New-ADUserFromTemplate function, to which you specify all the properties you want copied while creating a User from an existing User (template User). Let's make it fun and write the code using the Behavior Driven development approach using Pester. This will probably a 2 part series : Day 1 - Getting the Ground Work ready, Pester tests for Parameter, Help & Module dependency . Day 2 - Write Pester tests and code for the actual function. Refactoring the Code. So we plan to do BDD or TDD here which means we write tests first and then follow the below cycle :