This is now, more or less, a PowerShell-focused blog.
About two months ago, I landed myself a new IT job. I’m still in the public sector, now working for a state agency instead of for a county.
It’s a lateral move so far as the level is concerned; it’s still a help-desk focused job. However, at the state level the pay is significantly better and the responsibilities are different, which I feel will help my skill set.
A New Focus: IT And Coding Are Starting to Blur
With this new IT job, I’ve found myself refocusing on IT-related studies instead of my coding skills. However, I came to realize a year or two ago that the future of IT work is going to involve some level of coding and automation even for non-developers. Scripting has been an increasing part of IT work for years, and languages like Python are a big help in that while also sharpening one’s coding skills.
However, I think for Windows shops, the future is PowerShell.
So What Is PowerShell?
Ed Wilson, author of the Hey, Scripting Guy! blog, has the best short description answer to “What is PowerShell”?:
Windows PowerShell is an interactive object-oriented command environment with scripting language features that utilizes small programs called cmdlets to simplify configuration, administration, and management of heterogeneous environments in both standalone and networked typologies by utilizing standards-based remoting protocols.
To laymen-ize that a bit: Imagine a computer’s command line reinvented, with object-oriented features that a scripting language like Python would have, that allows IT staff to automate more of their tasks and machine configuration. A coding mindset (from Object-Oriented Languages like C# and Python) translates well to PowerShell scripting.
PowerShell Is Becoming Less Optional Every Day
Now, to earn Microsoft’s mid-tier MCSA Server 2012 certification for system administrators, a tech must know PowerShell. There’s no getting around it anymore for the exams.
There are two versions of Windows Server: A “full” version with the whole graphical interface, and a “core” version that’s stripped all that away, with just a command line used to work with the server. PowerShell is required when working with the Server Core machines, and Microsoft has been trying to push for more “Core” and less GUI on their servers for a while now.
Besides that though, PowerShell is going to automate more and more of the IT task load, and that means I have to adapt and learn PowerShell to keep myself marketable.
Infrastructure As Code?
As Don Jones pointed out back in March, IT is actually starting to move past automation to its next step, which is to define settings in code, in an environment setup to know how to automate itself:
Whether you use Ansible, DSC, Chef, Puppet, Salt, or Pure Black Magic, being able to state what you want your environment look like, and having your environment “make it happen,” is where we’ll all be in a decade.
PowerShell has its own take on this, called Desired State Configuration (DSC). The service is setup to define how servers should be configured when they’re deployed, and can automatically reconfigure a server back to predefined settings when it detects those settings have changed.
With all this in mind, IT staff will need to know some level of coding in the next few years. Even the help desk guys will need that knowledge to automate some of their tasks. I was asked in more than one interview if I knew PowerShell.
PowerShell Will Be My Focus For Now
With all this in mind, for now PowerShell will be my primary focus, with a side goal of working towards my Microsoft MCSA: Server 2012 certification. This blog is now going to chronicle my studying “log”, for lack of a better term, for me to share some of the cool stuff I found I could do, as well as some of my hangups in doing those things.