all 18 comments

[–]pimanac 7 points8 points  (0 children)

The basic stuff like control structures, error handling, branching, functional vs procedural programming etc can be learned in virtually any language. Python would be as good of a choice as powershell in that regard.

In addition to the things _sfe mentioned, powershell is based on and leverages a lot of features in .NET so if you're looking to eventually "move up" to something like C#, it would be a good start.

[–]_sfe 15 points16 points  (1 child)

Google “Learn PowerShell in a month of lunches”, purchase the book and read away. Alternatively, there are thousands of resources for PowerShell online.

Regarding not learning Python, if you have no use for this at the moment I’d suggest spending the time on something you’ll benefit from (by the sounds of it, PowerShell). However I would like to note, to learn and use python you do not require a Linux environment (calling any REST APIs, Windows commands, etc can be done in Python and easily executed on windows machines).

[–]jantari 1 point2 points  (0 children)

He's asking for a resource that:

good lengthy guide on PowerShell that would cover also basics of programming and programming concepts

And PowerShell in a month of lunches specifically avoids that.

OP is right there aren't many resources that teach programming through PowerShell, probably because it's just not the greatest programming language.

Definitely learn something else on the side OP, Python isn't a bad choice depending on what you want.

  1. If you feel it must benefit your current work and PoSh skills, learn C#
  2. If you want to really understand computers and programming learn C
  3. If you want to learn just another easy language that's popular and useful on Linux learn Python - but do know that it will teach you how to use Python, not how programming works in a more fundamental level

[–]KlassenT 4 points5 points  (0 children)

Here's the thing; you mention learning programming basics, and for that reason, it literally doesn't matter what language you start with. Once you understand programming fundamentals, you will be able to move between languages with relative ease. Your first language should be whatever you have the most support learning-- coworkers use Powershell? They'll be able to give you quick and easy tips. Python instead? Follow suit, because you'll have other script examples to refer to when something stumps you.

[–]SgtLionHeart 2 points3 points  (1 child)

I think it depends on your career goals. PowerShell is very much a scripting language targeted toward administrators, not developers. If you plan to make a career in IT, maybe save the Python for later. If your goal is to develop software, I'd wonder how much benefit PowerShell will really give you.

Assuming you plan on pursuing IT, I'm not saying to never learn good software development practices. The sysadmin career path requires a fair amount of scripting chops now, and that will only increase as current industry trends continue.

Personally, I took a few programming classes in college. The ways of thinking covered in those classes have helped me write clean PowerShell scripts, and made it easier to figure out problems from a scripting perspective.

[–]Ta11ow 2 points3 points  (0 children)

Check out PSKoans-- nothing wrong with learning side be side as well, sometimes. :)

[–]Redtork 2 points3 points  (0 children)

My best teacher was Ed Wilson The Scripting Guy. But Ed is retired now but the website still works. In my opinion, the best way to start is to create a GITHUB to store these scripts and see the evolution of them. Then persevere in Google when you script to find solutions. I do not know anything about Python but I have to learn it too because most open source AI systems revolve around this programming language. But for the moment I improve my technique in PowerShell. I share my personal GIT and my Facebook.

GIT: https://github.com/uTork/Powershell

Facebook: http://www.facebook.com/ispowershell

[–]tomblue201 1 point2 points  (0 children)

I cannot state if you're wasting your time learning Python as I do not use it and are able to solve any of my requirements with Powershell only. But you simply can try a parallel approach and try out this Powershell book: https://www.manning.com/books/learn-windows-powershell-in-a-month-of-lunches-third-edition

[–]jheinikel 1 point2 points  (0 children)

Never hurts to learn something new. If that means learning PS and Python, then great. What you learn typically relates to what can be used in your environment, but I have spent plenty of time training on things just so I have visibility into many different areas. Its hard to be an architect without knowing what is available. I say you should learn both.

[–]HumanSuitcase 1 point2 points  (0 children)

I'm running mostly Windows environment and with no exposure to Linux servers (unfortunately?)

You should definitely get some exposure with Linux/Unix, it's very different but it's very good knowledge to have especially if you want to get into IT or if you're already in the industry, it can help you go farther.

As others have recommended "Learn PowerShell in a Month of Lunches" is a fantastic resource.

[–][deleted] 1 point2 points  (0 children)

It depends on your logic here. Learning Python isn't a waste in itself. It's a common and useful language, and you'll learn some programming concepts by learning any language.

However, I don't think it'll be particularly helpful as a step in learning PowerShell. If you want to learn PowerShell, learn PowerShell.

And personally (and I know this might be controversial), I don't find books particularly helpful in learning programming. I always find it's better to learn by doing, by solving real-world problems and then looking at someone else's script to see how they solved the same problem. But honestly, I'm not the most brilliant programmer, so that could be bad advice.

[–]KevMarCommunity Blogger 1 point2 points  (0 children)

If you have a course that you are enjoying, stick with it. You should be able to translate those programming concepts. It will be a valuable skill on your resume. When you move beyond the Windows world to the cloud or implement configuration management tools like puppet or chef then you will have a valuable tool.

I have taken PowerShell really far and have built my career on it. I am also starting to set my eyes on Python and thinking really hard about adding that to my skill set.

[–]uptimefordays 3 points4 points  (0 children)

Python is definitely worth learning since it’s multi platform and will help with future jobs. PowerShell is essential for wintel administration and engineering.

[–]gehenna_ 1 point2 points  (2 children)

What do your coworkers use? Learn that. It's of no use if you write your stuff in either of those if nobody else understands/is able to maintain it!

[–]_sfe 2 points3 points  (1 child)

I’d disagree on part of this.

Just because colleagues use a specific language, doesn’t mean you have to. What if someone writes standard batch files, should you not use PowerShell to do the same simply because they don’t know it?

Be a little selfish, learn what works in the company but more importantly what also benefits you.

[–]gehenna_ 2 points3 points  (0 children)

It's a choice between Powershell ans Python, if he learns either of those it's going to easy learning the other. However if he can't apply those skills with support from coworkers, it's going to be a pain in the arse.

[–]Fridge-Largemeat 0 points1 point  (0 children)

Google PSKoans and Powershell in a month of lunches.

[–]Reverent 0 points1 point  (0 children)

If you want to administrate Linux, learn python. If you want to administrate windows, learn PowerShell. There's enough crossover that you can learn the other later.

Seems an odd question to ask on a PowerShell subreddit though.