My PowerShell Journey

As I look back on my sixteen years in information technology, I can’t help but notice the impact PowerShell has had on my career.

First Automation

My first automations were little batch scripts and AutoHotKey plays. They did trival tasks like opening multiple Internet Explorer windows and the Active Directory Users and Computers tool to quickly get myself up and running at work. I’d share them with my coworkers while sitting at a college helpdesk.

The college systems team asked me to not automate the password reset and to only use the GUI. They probably saw me for what I was, someone too green to know the potential blast radius of an errant script.

In my next job at a different college, colleagues viewed my thirst for automation with apathy instead of derision. You can accomplish a lot in an apathetic setting, as long as you don’t make work for others.

We had a manual process to generate student accounts. At this two year institution, we would have around six thousand students registered. That means, we would turn over about a quarter of the student population every semester (weighed heavily for fall over spring). This meant that lots of student accounts would need to be created throughout the school year.

Someone on our helpdesk would copy a file to a domain controller (I know), and load users via a Windows 2000 executable that was copied to a Windows 2003 server. One person was assigned that task. When they were out, no student accounts were created.

I had our Saturday shift on the helpdesk so I threw myself at automating this task. We could generate csv files from our student information system, so I fired up Google to see how to process entries in the file. I found PowerShell through this task and it changed the trajectory of my career. Importing a csv in PowerShell v2 was a breeze. Mapping those entries to the Add-ADUser commandlet took no time at all. Building out the logic needed to update existing users wasn’t much harder.

It was then that I came to understand the power of automation.

Learning Git

Once I realized that my scripts were load-bearing, I figured I needed to store it in a VCS. In college, I would constantly hack at my programs until they worked. This brute-force style meant that at some point, my iterating would eventually go off the rails and I needed a way to get back to a known-good state. The PowerShell community would always mention Git as the go to source control.

I immediately saw the utility to staging and commit work. Where previously I was hesitant to iterate, I could now experiment to my heart’s content.

The Pro Git book by Scott Chacon and Ben Straub was a great resource. I still read it every few years as a refresher, as I still seem to pull out new tricks on each reread.

90 Hours of Training and Month of Lunches

It was around this time that I convinced my employer to get me a subscription to CBT Nuggets, where I soon found Don Jones’s 90 hours of PowerShell trainings. They were still releasing them and I soon caught up as they were released. My Saturday shifts went towards bettering myself and my career. Those videos were time well spent. Don taught me how to program that finally clicked for me.

I soon bought the Learn PowerShell in a Month of Lunches and PowerShell Toolmaking in a Month of Lunches. The CBT Nuggets course overlapped a bit, but it helped me gain a better understanding of designing tools for users.

Open Source

Once I got used to committing, adding, and pushing code, I figured I’d start participating in open source. I built tooling around the Pushover API which I still use today.

PSGitLab would be my first real foray into managing an open source project. It eventually went on to have 14 contributors, some offering up thousands of lines of code to my project. I learned so much about managing that project and I am the better developer for it. Development on that project fell off with the birth of my daughter while I was finishing up my degree.

Hosting TechSessions

Through PowerShell.org I volunteered to edit some of their books and to maintain them over-time. I can no longer find them, but I remember working on the HTML reporting one. Update 2023-12-12: James Petty over at PowerShell.org reached out and pointed me to Creating HTML Reports in Windows PowerShell. Not sure if my name is mentioned in it anymore but there it is!

From there, I began hosting the TechSession webinars for the site. There, I got to chat with community members like Don Jones, Jason Helmick, Dave Wyatt, Steven Murawski, Mike F. Robbins, and others.

PowerShell Summit of 2015

My trip to the summit began with my employer, sending me off to Charlotte to attend. I was able to put faces to the names I’d bumped into over the years. The content was great, the side conversations were out of this world, and I loved the entire experience.

Mike F. Robbins did a great talk on setting up your own PS repository for your modules. Dave Wyatt went over storing credentials securely. There was talks about paralellism from a technician that oversees thousands of servers at an ISP.

I even got to meet Jeffrey Snover. Twice. One time I got to share a beer with him. He is funnier in person than he is online or in his talks, which I didn’t think was possible.

Other Thoughts

PowerShell has been good for me. Being a computer science dropout, it was satisfying to overcome the beginner stage and delve deep into a programming language. Solving actual issues while learning new concepts. Now, I’m able to bounce between a few languages and am dangerous in a few others. I don’t think I would have had the career, the job satisfaction, or the fun without PowerShell.