Identity and Geekdom

PowerShell or Die

Such a strong title, but I think it sums up my view on the question of “Should I bother with PowerShell?” quite nicely. I know I’m late to the PowerShell party, but in the last 3 weeks I’ve really made learning PowerShell my main focus in hopes of making up for lost time. I really have come to the conclusion that if you are an IT professional who works with Microsoft products, that you need to really learn at least how to use PowerShell, or I suspect it will be your career that is going to be the thing to die.

Why have I kept a blind eye to PowerShell, even though it has been known it was Microsoft’s direction for interacting with it’s infrastructure? Through the years of being an IT pro, I had amassed a nice assortment of little utilities that have allowed me to automate what I needed, when I had to manage something. Since I work largely with Active Directory, I sang the praises for JoeWare’s dynamic due of ADfind and ADmod for doing most administrative tasks. For whatever task needed more finesse, I have created many a utility in C# using classes such as System.DirectoryServices to build whatever I could imagine to resolve the problem, or build a tool for someone else to complete their task in a better way. Since I have long ago retired VBscript from my common tools, I foolishly dismissed PowerShell as just another scripting language, and since I could use .NET to build tools, I didn’t want to learn yet another way. Instead of working with the PowerShell cmdlets for ForeFront Identity Manager (FIM), I was writing tools using the .NET resource client instead (Post about this in the future).

So if I am fortunate to have the skill to create what I need, why am I smitten with PowerShell? It’s because it’s not about what I can do, but it should be about how I can help others do their tasks better. PowerShell is the perfect environment to create a function to resolve an issue, and not have the user need to learn a whole new set of skills just to use it. For me, the secret sauce is the PowerShell object pipeline that really makes it stand apart from other shell environments. The ability to pass the objects through the pipeline to accomplish tasks, seems like a simple concept that I failed to grasp the impact my first look at PowerShell, but I appreciate it now.

Though I own several PowerShell books, I only casually thumbed through them with a half hearted attempt to learn the environment, I went to see what screen casts I could find on YouTube which might be more helpful. Fortunately I stumbled upon Jeffery Hicks‘ “PowerShell in a Nutshell” video, which started to ignite my interest in learning more. He had mentioned his column of ‘Prof. PowerShell’on MCPMag’s site, and I spent the week reading each entry from 2008 till present, and it was an eye-opening ride into just how powerful the shell can be. I felt it was a good way to understand the evolution of PowerShell, so I could understand what it could do today.

So now that I’m on the PowerShell train, I fully admit I was wrong to dismiss PowerShell. The ability to create tools, and even use the .NET Classes I’ve grown to know and love when needed, while keeping a familiar experience for users of the tools really makes it for a great platform to build upon. PowerShell has it’s limits, which I will post about in the future, but I think even those will be resolved as PowerShell evolves as it has so far.

If like me, you were sitting on the sidelines, secure in your own tools, that you never gave PowerShell the attention it deserves, I implore you to use the links above, and see what all the hype is about. I’m confident you will see what puts the Power in PowerShell, and really how simple it is to start using. I’ve removed all my old tools that I use daily, and for me it’s going to be “PowerShell or Die” when trying to accomplish those tasks now.