In some ways, Dave Houghton fits the profile of an IT professional depicted in this year's Windows IT Pro industry survey. He's a network analyst, his main experience is with managing Windows OSs and applications, and he's been in IT for nine years. But Dave is also a former pilot and a self-taught scripter—the only member of the York (Ontario) Region District School Board's IT administrative staff with an interest in scripting, he says. Dave's penchant for scripting led him to temporarily trade his network-analyst job for a contract position with the school board's IT staff: developing an application to automate a lengthy, manual process of updating Active Directory (AD) and Exchange Server 2003 distribution list (DL) information for approximately 15,000 school employees. I spoke with Dave about how he solved the problem programmatically and some of the other IT challenges he's faced.

How did this project come about?

Teachers' and administrators' demographics change frequently. With this frequent change, the school board required a process that updated users' AD metadata. The updated metadata would then be used to add or remove users from more than 300 DLs. Additionally, the board was in the process of migrating from Exchange Server 5.5 to Exchange 2003 and needed a way to update the DLs. The original process was to update the Exchange 5.5 DLs with data that was generated from a process that read AD, then delete all users from all the DLs and rebuild them.

The board had looked at different programs to try and meet their diverse needs of DL memberships but found nothing that suited these complex needs. So the board hired me to develop a system that automated the process of updating user AD metadata and DLs. I wanted my new program to do three things: update the user data nightly, during the update process detect demographic changes in a user account, and update DLs accordingly.

How does the automated system work?

IT receives two HR files nightly: one for custodians and one for administrators and teachers. Each user record contains a field that indicates whether the record status is add (new hires), change (changes to the user's demographics), or disabled (users who have retired or left the board). The program I wrote, using VBScript and Windows Management Instrumentation (WMI), extracts data from the two HR files to populate a Microsoft SQL Server database and update the metadata in AD. After the user's metadata is updated, that user is then added to or deleted from the DLs that the user should or shouldn't belong to.

I've also developed a single-user program that queries the Global Catalog (GC) for a specified user. The program updates the user's demographic information instantly by referencing the data populated in the SQL Server database. Then the program uses the updated metadata in AD to update the DLs accordingly.

Basically, my program functions more like an account management program as opposed to a DL manager because it updates everything in AD associated with a user account.

What role do the operators play in the automated DL-updating process?

Operators still enter and maintain user-account information, but they don't have to manually configure accounts any more. Instead, they enter employee IDs, then press Start to run a single-user process, and the user account is configured with the data from the HR files. Now, updates to user information and DLs take only a day instead of a week. The operators are happy with the solution because it's freed some of their time to perform other tasks. Now, when the board wants to have a task automated, they always come to me, and I'm able to create a script within a day or two.

You'll be moving back into your network-analyst position soon. What's the next IT challenge on your plate?

The foremost problem I deal with is our ever-changing IT environment. Right now, we're looking at moving our high schools to a Citrix Systems -based platform. Learning and keeping up with my skills and making sure that I'm on top of my game is the biggest adjustment that I have to make right now.

What got you hooked on scripting?

I became interested in scripting a few years ago after reading a Windows IT Pro article and signing up for a two-month trial for Windows Scripting Solutions newsletter. I began writing scripts to automate mundane tasks that I was responsible for performing as a network analyst and progressed to automating more difficult processes.

Programming can be frustrating for some people, but if you enjoy solving problems every day and manipulating and automating processes, programming is the way to go. If you want to see how fast you can make data go from its source to a destination, I guess networking is the career path to follow. It depends on what you like. With programming, there's always a need to automate tasks to free up time to learn and do other things. Programming keeps me thinking all the time—it's one of the things that keep me up at night.