Going further with Powershell.

Hi!

It needs to be said that the title is not by any means implying that I’m all knowing when it comes to Powershell!

Now, I’ve been spending most of my spare time for the past year learning powershell.
I currently work as your regular IT-Admin mostly working with AD and O365.

I try to solve pretty much everything at work using powershell. I’ve written a few modules, some “help-desk-tools” using WPF and a bunch of miscellaneous scripts. I’ve dabbled a bit with DSC as well as written a few pretty simple DSC resources (nothing of real value).

I’ve read PowerShell in Depth 2nd Edition (first PS book I read), DSC revealed and a few others.

Now, I’m a bit lost on where to turn in order to get more advanced at Powershell.
For last 6 months or so I’ve started to learn a bit of dotNet as I’ve started to use more and more dotNet in my code.

So my question is, do I learn more dotNet? and if so, do I need to look at C#? As far as I know there isn’t much to read when it comes to powershell + dotNet specifically.
Or should I focus on something else? I have not touched event-handling all that much, as well as a few other topics.

What are your goals? Are you quite skilled at making best-practices and -patterns tools in PowerShell? Have you mastered DSC? Workflow?

I feel pretty comfortable in saying that i’m pretty good at best-practises when it comes to toolmaking in PowerShell, one can always get better I suppose.

I’m far from mastering DSC - I understand the basics of how it works and like I’ve said i’ve written a few very simple resources for the purpose of learning and better understanding DSC. I’ll definitely look more in to DSC.

Workflows and Event-handling is the two topics I’ve touched on the least.

My goal at the moment is mainly to get more advanced at powershell as a programming language. I recently switched over to WMF5 and windows 10 and currently trying to use classes more and more in my code.

It’s just hard for me to express exactly what I want, I just feel as if there are no more pure powershell books to read that will take my toolmaking to the next level.

Do I need to get better at dotNet? Is there any books out there I can read to get better at using dotNet with powershell without getting C# books?

Thanks for your reply Don - love your work!

Yeah, definitely depends on your goals.

What sort of role do you see yourself in down the road? One of the big benefits to PowerShell is that it can glue so many technologies together, and the bit of learning you put in for PowerShell applies to working with those technologies.

So…

  • You should probably keep pursuing PowerShell itself. Books like PowerShell in Action (and product team / wizard-MVP posts) might help you learn more about the language, others like Learn PowerShell Toolmaking in a Month of Lunches do a great job explaining how to take the language and create valuable, re-usable tools.
  • To be more effective with PowerShell, you should absolutely dabble in other languages like C#, Python, or Ruby.
  • You might want to familiarize yourself with the various components you find in a solution. Are you familiar with IIS or other web stacks? How about database design and dev? HTML / CSS / JavaScript and maybe ASP.NET for a friendlier web interface? Hyper-V or vCenter / ESXi for the virtualization layer? Maybe RabbitMQ or ZeroMQ for messaging? The code behind your solution would need to be written and stored in source control (Git or Mercurial over GitHub or BitBucket, perhaps), ideally allowing for CI/CD with automated testing and deployment (maybe Jenkins, TeamCity, or AppVeyor).
  • I would argue that having a grounding in being able to create your own solution is important, but the stuff above might be intimidating. I would recommend trying to learn the basics bit-by-bit, but you might take another route. Perhaps you want to focus on learning other folks' tools, like diving into the System Center suite, or other existing solutions.
  • The various solutions you design or pick should be configured consistently. You might consider brushing up on DSC, Ruby, and tools like Chef, Puppet, Ansible, etc. Hmm, and perhaps you want to jump on the bandwagon and learn a bit about containers, which can simplify deployments and scaling (among other things)

There’s a common thread with all of these. Generally, they can all involve PowerShell, or improve your ability to work with it.

Of course, this is from my own limited perspective. Take it with a grain of salt. There’s so much out there, the trouble is usually picking which areas to focus on, given how many directions you can go.

Good luck either way!

Hi Warren! I’ll have to take some time and think about exactly what I want to pursue first - definitely good advice. As for source control, I’m using gitlab :slight_smile:

Thanks!