I have been working with Automation in a Windows environment for a long time. The first tool I worked with was just the DOS batch file. I played with my AutoExec.Bat and did all kinds of amazing and fun things with it. My first language of choice was Perl. I liked the functionality it provided and I could find a plethora of sample scripts that I could adapt to my needs. It was also extremely fast with text/string processing. I dabbled a little with KixStart because my company login script had been written in that language. When I decided to overhaul the login script, I considered Perl but the overhead of installing the Perl engine on all of my corporate desktops was more than I was willing to take on. Looking at the other options available, I opted for learning VBScript as my next language of choice. I had some co-workers who could follow the VBScripts, so I was not alone in my ability to maintain it; an advantage over Perl at the time. I duplicated the functionality of the KixStart script in VBScript and then started extending the functionality with some logs that got integrated into our Intranet on a page used by our support personnel. We had a new co-worker that had some development experience and brought that skill set and expanded the functionality of the login script significantly. He also broke down the VBScript into Subroutines and Functions and building something akin to modules in PowerShell.
But enough of the background on my journey to PowerShell. My interest was peaked by the Monad Manifesto (http://www.jsnover.com/Docs/MonadManifesto.pdf) by Jeffery Snover. I dabbled with it a little in Exchange 2007 but I was not maintaining Exchange as part of my day-to-day job anymore. PowerShell was not yet ready to take over the functionality that VBScript provided me and I was not ready to refactor all of my plethora of scripts that I had accumulated. I continued to follow the development of the language and grew more excited at the prospects. When Microsoft released Windows 7 and Windows Server 2008 R2 with version 2.0 integrated into the OS, PowerShell because a real language that I could start using on a day to day basis. The new cmdlets that were introduced brought a level of functionality that I could really start to use in my day-to-day job. I used books by Don Jones and Jeffery Hicks since I was familiar with them from their VBScript books, as well as Richard Siddaway to start to learn more about the language. They are all quick to point out that the most useful cmdlet in PowerShell is Get-Help. The help that is included in PowerShell by default is amazing in its depth and functionality. When writing my own functions and scripts, I try to emulate that depth and functionality as much as I can. I truly like the examples that are provided. Often when I have an idea to do something in PowerShell, with a little perusal of Get-Help and the Examples section, I find an example that is close to what I want if not an exact match.
Besides the books by those mentioned before and others, I have also learned a lot from the videos by Don Jones, Jason Helmick and Jeffery Snover (The Creator) and others. I would highly recommend the free Microsoft Virtual Academy videos with Jason and Jeffery as they are both very informative and entertaining.
As PowerShell continues to mature and more functionality has been introduced, I have started using it more in my daily activities. I have written many functions and even put together a few modules for my own internal company use. I will be cleaning up and publishing some of these in the Gallery in the not too distant future. That and a GitHub repository (forthcoming) for collaborative development. Coming from the operations side of the house, I have been adopting the developer mentality of using a code repository and organizing my code (much of it modeled around what my co-worker first did with my VBScript-based login script).
I have been following many of the PowerShell personality, on Twitter, YouTube, conferences, PowerShell Saturday, and GitHub. I have been learning from them and absorbing their PowerShell essence. It is time for me to give back and start sharing some of what I have learned along this wonderful journey. I have started writing down ideas for blog posts and I have a few in the works that I will be publishing soon.
Welcome to my journey. I hope I can give at least a fraction back of what I have learned from this wonderful PowerShell community.