Last evening I had the privilege to host the Ask the Experts: PowerShell Unplugged session at Microsoft Ignite, our largest tech conference every year. I had a panel of the most influential people in PowerShell, it was absolutely incredible! When we were planning the session I had suggested we host an after party, because the 30 minute ATE session was not enough to answer the community’s questions. Plus, these guys have such an amazing dynamic and have such a great story to tell.
We hosted the party through the YouTube channel for the DevOps Lab and it was a massive success. Always with these things time zones are hard, we’ve recorded the session and you can watch it here. I fielded questions from the community while running as the producer and moderator (for the first time ever) and it was hard, nothing like learning on the fly. I let the community speak and the PowerShell team and MVPs answer the audience and engage in banter. I woke up this morning very early thinking about how my interactions with PowerShell has affected my career and changed over the years.
In 2011 I packed up from my apartment in Boston, Massachusetts to move to Colorado and work for Vail Resorts. I was chasing my ‘dream job.’ I grew up skiing from the age of 3 and was a ski instructor for 7 years, while that’s a whole other story, I was stoked to pack up my adult life and move 2/3 of the way across the US in hopes of making a new life for myself and my dog, Moose. When you arrive at Vail’s corporate offices in Broomfield, CO the sign out front reads:
“Vail Resorts: Experience of a Lifetime”
I knew it would be…
This was the first time in my tech career that I was owning an entire infrastructure and had a small team to work with. I went from working other roles, including an MSP in the Boston area, but this became my ‘baby’ to own. I cannot remember how it happened, but my manager offered us PowerShell training. I immediately signed up.
I sat in a 3 day PowerShell 2.0 workshop, absorbing as much as I could. At the time I was using Evernote to keep some important work notes to hand. This morning, I logged into my Evernote for the first time in 963 days. I wanted to find out if I had kept my notes from the course that I took in 2012, sadly I didn’t. What I did find however, were some of my old PowerShell scripts and other tech notes. I also found some PowerShell commands to work with SQL, shhhh….don’t tell anyone.
While I don’t have the notes from when I took that course, I remember the first day talking a bit about PowerShell and how it’s structured, days 2 and 3 were more focused on how to use it to manage Exchange, SharePoint, etc. It never really went on a deep dive and it didn’t really do the language justice into the power and capabilities. Looking back, this is something that I wish the trainer had done differently, or that I had taken the initiative to do more with on my own.
I remember owning a PowerShell 2.0 book and referencing it quite a bit. At that time in my career I managed everything in our tech estate (Exchange clusters, Citrix, VMware, WSUS, AD, SharePoint, Cisco …the list goes on). I was a massive walking knowledge base on Exchange Server and Active Directory at the time. I automated everything I could and queried everything using PowerShell. Up to that point in my career I had done numerous Exchange migrations but it was exciting being able to manage my own estate, but man, did it have problems. I have found an actual piece of documentation that I wrote in my Evernote:
I never really wrote out massive scripts with PowerShell, always tasks, queries and automation of some task. Saying that, I have also found a folder from those days with a library of scripts that I used on a regular basis. For fun, I opened a few up to see what I had written…..
While these scripts allowed me to do so much in my day to day job, I never got super deep with my technical knowledge. I feel like a better course over those 3 days would have been more useful and honestly I wish I had walked away with better resources.
Fast forward a couple years to 2013, I moved to the UK. I worked for other MSPs and kept on using PowerShell for customer projects, etc. My focus was directed to the customer projects that revolved around virtualization (both Hyper-V and VMware), O365 Migrations, general upgrades to SANs, Firewalls, etc. Again, never writing hugely technical scripts. Much of this experience in my career has developed and driven me to where I sit today, I didn’t realize the impact that it would have at the time on my long term career.
I started working for Microsoft in 2018, based in the UK. When I started, we were sent to a ‘bootcamp’ to skill up on Azure. At this point in my career I had already been focusing on Azure for 4 years (since 2014) and wanted to get deeper into the cloud tech. The bootcamp was okay, I learned a bit, but what was move beneficial was seeing (and meeting) subject matter experts in person and being able to absorb what they were saying AND ask invaluable questions.
Microsoft sent me to another event in February 2019 in Seattle. At this event, I attended sessions, some good and some not as good, I was looking for something new to bite my teeth into. From this event I met someone who would help me make a major change to my career. Insert the amazing and incredible Abel Wang (Forever, THE Rockstar). To cut a long story short, Abel invited me to record on the DevOps lab on Channel9.
I had spent the last couple of years working in Azure, and I made it no secret that I had zero love for ARM templates. I discovered Terraform and was spreading the good word with my customers and developed a passion for Infrastructure as Code (IaC). I flew out to Redmond to record my first episode, Deploying your Azure Infrastructure with Terraform. Which later became a series (see the videos and other blogs on my website).
On the day that we recorded this episode, I wanted to be more ‘dev’, so I wrote my demo in Bash. That was dumb. Abel told me he was a MASSIVE PowerShell fan, at this point I wanted to crawl into a hole. Abel laughed it all off and said, ‘Hey, let’s have lunch with Jeffrey Snover!’ Well…we did. I also told Jeffrey about my faux pas in the morning.
Okay, so lessons learned, always be true to yourself. Moving on… Now, I always use PowerShell when possible.
Fast forward a few months and I joined Microsoft’s Commercial Software Engineering (CSE) team. CSE is allocated to ‘build with/code with’ customers and my team was a Cloud Native team. In our team we had a knock out line-up of guys. We did a lot with Terraform and automation. We called ourselves ‘The League of Extraordinary Hackers.’
On our first customer project we were deploying our customers application into Azure with Terraform. Terraform is great, but it doesn’t manage the state. I’m on a team with some very well opionated folks who are HUGE into their open source technologies. While I respected their views, I
calmly adamantly suggested we use DSC to manage the state of the infrastructure. The guys were skeptical and you could hear the gasps: ‘Using PowerShell?!?!?! But we’re using Linux and we like open source….’
We used DSC and the guys loved it, we even injected PowerShell scripts into our deployment pipelines and they willingly admitted it was easy to use. With any IaC language, they all have their perks and downfalls, Terraform doesn’t manage the day to day ‘state’ of what your OS is doing, so we needed another tool. With all the other options (Chef, Puppet, etc) there are so many ways to configure and run your infrastructure, and everyone has to decide what’s right for them (hint: Choose PowerShell 😉).
For me, the journey of using PowerShell hasn’t been as in depth as I’d like but I recognized early on that PowerShell was EXTREMELY powerful and had some invaluable and applicable use cases. I am in no way an expert in writing PowerShell, but I’ve used it in so many weird and wonderful ways. From learning PowerShell 2.0, to managing Exchange, O365, Azure and into DSC….It’s been a technology that I can happily rely on. Very few technologies develop and grow like PowerShell has, Happy 15th Birthday PowerShell! PowerShell 7x is open source, you can run it on Windows and Linux, you can contribute to the repo, open issues, etc., it has longevity and functionality that has stood the test of time.
Last night as I moderated the ATE session, I saw so many awesome questions come in from the community. Anything and everything from very specific technical questions, to those learning about features through to those just learning about PowerShell. We all have different technical backgrounds and experiences, seeing the community participate in the ATE session and the After Party was amazing to see. I consider myself a part of a large and awesome community of PowerShell users.
Due to the fact I never felt like I went deep enough into PowerShell, I’ve tasked myself with completing ‘PowerShell in a month of lunches’ to re-learn things that I may have forgotten and to harden my foundational learnings.
My parting wisdom: Never stop learning and get involved in the community around you.
Thank you to the PowerShell team for your contribution over the years and for taking your time to impart your wisdom on us. We, the community, are forever grateful!