I've been in IT operations for nearly two decades, a job where I could answer help desk calls, fix computers, rack servers, spin up VMs and crawl through ceilings pulling CAT5 behind me. To succeed in IT ops takes a figurative utility belt tools for management and monitoring tasks.
Each tool an IT operations professional has aids them tremendously -- Angry IP Scanner keeps an eye on the network, TreeSize ensures server storage consumption stays on spec -- but it was Windows PowerShell programming that gave me the power to truly automate anything.
Windows PowerShell is flexible and powerful but requires that the user know programming. I wasn't a software developer, but over time, I began to understand simple constructs, like if/then, loops and variables. I learned how to code, but I wasn't a software developer. I had little scripts scattered here and there for my own work; most people didn't know they existed.
Many IT professionals use PowerShell scripts to help with daily tasks, such as provisioning a new Active Directory (AD) user or generating an ad hoc system report. Windows PowerShell can merely replace VBScript, which was never a powerful IT operations automation tool. But Windows PowerShell programming is capable of many things.
Windows PowerShell toolmaking and DevOps
Using PowerShell as a simple VBScript replacement is like driving a Lamborghini back and forth to the store for milk. A Lamborghini can do that trip, but so much more; PowerShell programming goes far beyond scripted tasks.
As part of the DevOps movement, IT professionals must up their game and collaborate more closely with software developers. IT professionals who inch closer to the software development space see how much more PowerShell programming can help with DevOps initiatives.
Microsoft pushes PowerShell as its automation language in nearly all products, which means that an IT professional can design and build full-fledged tools to perform the same work that big commercial products do. For example, a company can use the freely available PowerShell App Deployment Toolkit in place of a software distribution product, such as Microsoft System Center Configuration Manager or Symantec Asset Management Suite powered by Altiris.
DevOps often follows or begets cloud use in enterprises, and Microsoft has PowerShell programming support for nearly every action possible in its Azure cloud offering. Administrators can quit clicking around in the Azure portal to create a VM and instead use a cmdlet from the Azure PowerShell module. PowerShell cmdlets also create app services, SQL databases and other components of the organization's cloud platform. For DevOps professionals responding quickly and often to application changes from developers, automated infrastructure management fulfills the ops side of the DevOps promise.
A PowerShell scripting example
When infrastructure is delivered as code, organizations define the whole system -- servers, storage, network -- in a configuration document. That's a far cry from unspooling cables and physically connecting them. IT ops pros in this DevOps approach need a build and deployment pipeline to deliver and test their infrastructure code.
If you're working in a Microsoft-based IT organization, the best way to program infrastructure is via Windows PowerShell and the technologies that go along with it, such as Desired State Configuration. PowerShell programming allows IT shops to dictate how Windows Server, Azure, AD and other important app support elements function. PowerShell is the language that can speak directly to all Microsoft products with the least hassle, like a single, unified API to all of Microsoft infrastructure. DevOps teams need those pathways to succeed.
If your organization provisions servers and entire environments by checking code into a source control repository and the code automatically provisions the right objects and performs tests against all of those objects, then you're ahead of the curve. This method is how IT professionals are going to keep up with the demand to do more with less. Treating infrastructure as code allows for a much more fluid and dynamic approach to infrastructure management, in a controlled fashion.
Pick up Desired State Configuration skills
Construct an infrastructure code pipeline
Develop as a DevOps engineer