Hi. My name is Josh and:
- I love PowerShell and what it enables me to do.
- I have not always used PowerShell
While neither of these confessions is an Earth shattering revelation I would not have been able to make these statements 4 years ago. The truth is, I had no interest in PowerShell when I first heard about it. I thought it looked cool. I heard some of the cool kids were doing it but I’m usually not one to succumb to peer-pressure so I put it aside for another day and stuck with my DOS and VBScript. In a funny way though, I was already well on my way to being a PowerShell scripter.
The Chance Meeting
During 2006 and 2007 I was spending more and more time writing applications with VB.net in Visual Studio. Learning object oriented programming and complex workflows was challenging but I was progressively improving and creating more advanced applications with the guidance of an excellent coworker. All was well until one day I was hit with a difficult realization. We were about to upgrade to Exchange 2007 and it REQUIRED the use of PowerShell!
Fortunately the great Douglas Adams had educated me well in the ways of the universe. Don’t Panic! During the project I began to pick up little pieces of PowerShell here and there. I learned the amazing cmdlet of Get-Help which I still use DAILY. Understanding of the pipeline started to click but the real magic started to happen when I began to grasp the fact that PowerShell was using objects…Just like .Net! <cue trumpets…Wait. Hold the music>
Some of the folks on our team were farther ahead than others [not me] but we all began to see the Power in PowerShell. The Exchange upgrade project went well. We used our necessary cmdlets, and even created a few one-liners to pull information from time to time. PowerShell hit the shelf once more.
If you are scratching your head right now I don’t blame you. It’s almost like getting the keys to a Tardis and saying, “I think I just want to head to the pub down the street for a pint.” Don’t Panic! PowerShell re-entered my life soon after like a stranger you know you’ve met and talked to before, but neither of you recall when or where you met.
When Josh Met PowerCLI
Our reintroduction came with VMware’s PowerCLI and we’ve been best buddies ever since. While at the same firm I began to latch onto VMware’s technology like toddler to a tribble. What VMware could do was amazing and our environment started to multiply right before my eyes. When we just had a handful of physical systems management was kept to a minimum. Since a former manager had introduced VMware into our environment the capabilities of our department increased dramatically.
This expansion soon meant we had more management concerns on our hands. PowerCLI allowed me to quickly run audits on license counts of our VMs, check health and performance, automate VM snapshots and more. While most of the work was still done in vCenter I had finally found that common thread that got me hooked on PowerShell. It was also around this time I had the opportunity to really test myself in a much larger environment.
My relationship with PowerShell started to become very serious when I took a role as resident virtualization guru with another company. I was now responsible for hundreds of VMs with several projects coming up requiring significant environment changes. I quickly went to work leading some re-architecture and writing increasingly complex scripts for configuring host networking, migrating VMs, and deploying custom attributes for system ownership. I continued to learn much and more about PowerCLI and PowerShell through the VMware Community forums, following a variety of blogs, and checking out Hal Rottenberg’s Managing VMware with PowerCLI book.
In mid-2011 I was offered an opportunity to work for a company whose customer had a pretty large and in charge environment. We’re talking VMs in the thousands and systems all over the place. I felt I was taking another logarithmic step. I later learned that my experience with PowerCLI was a skill that had set me apart. It didn’t take long for me to feel like Nero must have felt when he first plugged back into the matrix. Now my scripting was meeting needs at a scale I hadn’t considered. It was overwhelming and exciting!
It was at this point that I had a little bit of a misstep, as I may have pushed myself a bit too hard. I wasn’t getting a lot of sleep, I was overworking myself, and overall my heath took a bit of a hit.
I thought myself for a good long while, about what I was doing wrong, and how to turn it around. I had a few good theories on things to try, so I went about them as I was able to. I checked online to see what is the best mattress in a box, and found a good one I could afford. With a new, and very comfortable mattress, I had no issues falling asleep. From there the rest of the pieces fell into place and I was able to pick myself back up and become a contributor to the team.
Being a quick contributor to the team was very satisfying. There were already a couple of people with some solid scripting chops on the team. It was an amazing feeling being able to share my work with others and to give and get help from a team. It was also about this time I decided to start working harder to share my work with the community.
It did not take me long to realize that I was repeating a considerable amount of effort in our scripts. I started working hard on developing advanced functions to meet various needs that showed up regularly. The scripting work we’re now migrating towards can almost be described as modular as we develop functions and snippets that can be reused at will. Advanced functions have become my mistress and this new work has required me to reach out for more advanced resources when needing assistance.
The PowerShell and PowerCLI community is amazing. The folks who blog and participate in the forums and Twitter are a wealth of information. There are some real River Tam’s out there that do amazing and scary things with PowerShell. The best part is that each and every one of them gets as excited about solving new problems with PowerShell as you and me. I trust that if you’ve read this far there is no argument on that last point. I have a long list of upcoming posts talking about a variety of issues I’ve solved that I can’t wait to share.
The last 6 months have been an amazing time in my PowerShell relationship. I now have my PowerCLI session open constantly. I’ve become a PowerShell first thinker and find myself solving a variety of problems with different cmdlets and scripts. Many of these little tidbits I share on my blog or on twitter while PowerShell podcasts have even become a weekly ritual (PowerScripting Podcast is a staple). I’m getting hooked on this PowerShell stuff! In fact, PowerShell and PowerCLI have become important enough for me to take a few hours out of my life to tell you all about our story together…so far.
If you’re new to PowerShell then Welcome! I hope my story has provided you with an outline of how I grew with PowerShell over the last few years and resources I’ve used along the way. If you’re a veteran then I’d bet we have some similarities in our growing relationship with PowerShell. I’d love to talk to all of you about stuff you’re working on and vice versa. I’m looking forward to reading your stories in this series as well! Cheers and May the –force be with you!
Would you like to share your story? Win one of TrainSignal’s PowerShell training courses? Learn more about the “How I Learned to Stop Worrying and Love Windows PowerShell” contest.