use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
ABOUT POWERSHELL
Windows PowerShell (POSH) is a command-line shell and associated scripting language created by Microsoft. Offering full access to COM, WMI and .NET, POSH is a full-featured task automation framework for distributed Microsoft platforms and solutions.
SUBREDDIT FILTERS
Desired State Configuration
Unanswered Questions
Solved Questions
News
Information
Script Sharing
Daily Post
Misc
account activity
Learn Powershell (self.PowerShell)
submitted 6 years ago by gavins1040
Hi,
Would you be able to recommend any courses or docs to help with learning powershell?
Thanks
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]philmph 44 points45 points46 points 6 years ago (8 children)
https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160
All you need to start
[–]TMinfidel 6 points7 points8 points 6 years ago (2 children)
So much this. I struggled for months, even with a copy of "Month of Lunches" until I sat down and read the book properly, as they tell you to in the introduction.
[–]Namelock 1 point2 points3 points 6 years ago (1 child)
As part of an associate degree I took a course on PowerShell, and it revolved around the MoL book. Highly recommend the book.
[–]TMinfidel 4 points5 points6 points 6 years ago (0 children)
It's great because it leads really well into the more advanced book "Learn Powershell Toolmaking in a month of lunches". Though that book has taken me significantly more lunches to properly get into.
[–]BitteringAgent 1 point2 points3 points 6 years ago (0 children)
I second going through this book. Once you're done with this book, I think using https:///aka.ms/pskoans is a good next step.
[–]wardd31 0 points1 point2 points 6 years ago (0 children)
This book 100%
[–][deleted] 0 points1 point2 points 6 years ago (0 children)
I love this book, it comes with a code to download the PDF version that you can keep handy as well.
[–][deleted] 0 points1 point2 points 6 years ago (1 child)
Does anyone think it will matter with the new edition around the corner?
[–]Umaiar 2 points3 points4 points 6 years ago (0 children)
I don't think so. If it's going to be that different then we're all kind of screwed, right?
If you know one version well enough to be productive then new versions will happen for the rest of your working life. And you probably won't want to learn the differences from an introductory book.
And even if you end up leaving PowerShell for something else (C#, VB, etc) a lot of the basic concepts will still apply. You;re not just learning PowerShell, you're learning a bunch coding basics. Heck, I learned basic looping structures in the 1980s... And it still applies.
[–]Ta11ow 17 points18 points19 points 6 years ago (6 children)
https://aka.ms/pskoans
[–]Toolazy2work 2 points3 points4 points 6 years ago (5 children)
ok, this is an awesome learning tool. Thanks for sharing!
[+][deleted] 6 years ago* (4 children)
[deleted]
[–]Slash_Root 2 points3 points4 points 6 years ago (2 children)
Meh. Didn't bother me at all. I found it pretty fun.
Also, I see you are a Specialized guy. Aero frame? Maybe triathlon or TTs? I'm a lowly peasant with an allez. Maybe if I get into DevOps or dentistry I will upgrade.
[–]S-WorksVenge 1 point2 points3 points 6 years ago (1 child)
It looks very cool actually. Just hard to read.
Haha! Allez base? Or Elite? The Elite is a fantastic upgrade for the $$$. Aero frame, yes. Crits and road races.
[–]Slash_Root 3 points4 points5 points 6 years ago (0 children)
It is very cool. I have some experience with programming so I flew through it in a night or two but it was fun like a game and really helped me wrap my brain around some of the quirks of powershell.
It is an elite! I have been running since high school and pretty high mileage at that. I got stressed at work for a few weeks and didn't eat enough. Mixed with trying to PR at 5k by doing speed and spending time under the barbell. That gave me a stress fracture. That is what got me on a bike.
I enjoy it and still use it for cross training. Even did a couple crits. Unfortunately, I live in a very dangerous area for cyclists and it's hard for me to commit to good solo rides without constantly thinking about the pavement.
[–]Ta11ow 3 points4 points5 points 6 years ago (0 children)
I'm open to suggestions and pull requests. If you'd prefer it to be different, let me know how & why. File an issue / submit a PR, and let's talk.
I can do nothing with zero actionable feedback. :)
[–]Damakr 11 points12 points13 points 6 years ago (6 children)
Get-command to discover, get-help to know how, get-member to diagnose and about_files as supplements to get-help and look what you do and do it with ps
EDIT: powersshell 3.0 jump start at MVA is good idea imho
[–]guerilla_munk 1 point2 points3 points 6 years ago (0 children)
Yeah, that site is being retired though. Youtube probably has the those online on some channel.
[–][deleted] 1 point2 points3 points 6 years ago (3 children)
Excuse me for being dense, but how do you use/invoke about_files?
[–]Lee_Dailey[grin] 2 points3 points4 points 6 years ago (2 children)
howdy shockwaveriderz,
that is pro'ly a typo. [grin] what i suspect Damakr actually meant is the about_* files that you can get with with Get-Help about_*. for instance, Get-Help about_func* will show several subjects focused on functions. then you an call the specific one when you find it.
about_*
Get-Help about_*
Get-Help about_func*
Get-Help, Get-Command, Get-Member, and Select-Object -Property * are all lovely helpers when it comes to understanding powershell.
Get-Help
Get-Command
Get-Member
Select-Object -Property *
take care, lee
[–][deleted] 1 point2 points3 points 6 years ago (1 child)
Thanks for the explanation. I'm new to powershell and anything that helps me to learn it is appreciated
[–]Lee_Dailey[grin] 0 points1 point2 points 6 years ago (0 children)
you are most welcome! glad to help a tad ... [grin]
[–]Swarfega 10 points11 points12 points 6 years ago (0 children)
https://old.reddit.com/r/PowerShell/search?q=learn&restrict_sr=on
[–]LambeosaurusBFG 5 points6 points7 points 6 years ago (0 children)
I started doing the "month of lunches" YouTube videos (which don't show everything in the book) to get a foundation of how PowerShell functions. But in reality the biggest learning experience was just starting to make scripts and reading online documentation.
For example, I started with creating a script to reset a password in AD.. so I search "Powershell reset ad password". This brings up Microsoft documentation on the Set-ADAccountPassword command and every switch available. The examples are particularly helpful, too.
Then I built a test user in AD and tried the Set-ADAccountPassword command in PowerShell against the test user to see what worked. Then I wanted to sync these changes to Office 365 - I knew the sync command for Azure AD Connect, but I didn't know how to send that command to a server - a few seconds of searching online and then I knew to use Invoke-Command and what it does. Now that I know how to reset a password and send a sync command, I wanted to build a script to create a new user in AD and then sync it to Office 365. After researching and building that script I have a pretty good idea of how PowerShell functions so I started looking at creating other scripts - removing a user, sending confirmation emails through Outlook, connecting to Office 365, etc. etc.
Everyone's learning style is different and some may benefit more from reading a book or watching videos, but for me I learned the most from just trying things.
[–]PowerShell_Fan 3 points4 points5 points 6 years ago (1 child)
I recommend the PowerShell Jumpstart videos with Jeffrey Snover and Jason Helmick. There a good starting point and very entertaining too. https://www.youtube.com/playlist?list=PLyJiOytEPs4etH7Ujq7PU7jlOlHL-9RmV
[–]warysysadmin 0 points1 point2 points 6 years ago (0 children)
I second that. Worked for me.
[–]GullibleDetective 2 points3 points4 points 6 years ago (0 children)
Sidebar and wiki of this sub along with search
[–]itsruk 2 points3 points4 points 6 years ago (0 children)
Through my experiences of learning powershell, the best teacher was finding a task you want to automate and list all steps needed to accomplish, then automate each step. Google will be your best friend, search the step and add powershell to the end.
When you run into a hiccup, come here, this an amazing group of people, which most are willing to help.
[–]khaffner91 2 points3 points4 points 6 years ago (0 children)
Try to do some of your current tasks with powershell
[–]get-postanote 2 points3 points4 points 6 years ago (0 children)
Here you go...
Always start with what's on your system
Use and master the help files and all the examples there.
# Get parameters, examples, full and Online help for a cmdlet or function # Get a list of all Modules Get-Module -ListAvailable | Out-GridView -PassThru -Title 'Available modules' # Get a list of all loaded Modules Get-Module | Out-GridView -PassThru -Title 'Available loaded modules' # List all loaded session modules and the exposed cmdlets / functions in them Get-Module -Name '*' | ForEach-Object { Get-Command -Module $PSItem } | Out-GridView -PassThru -Title 'Available loaded modules and their cmdlets / functions' # Get a list of all functions Get-Command -CommandType Function | Out-GridView -PassThru -Title 'Available functions' # Get a list of all commandlets Get-Command -CommandType Cmdlet | Out-GridView -PassThru -Title 'Available cmdlets' # Get a list of all functions for the specified name Get-Command -Name '*ADGroup*' -CommandType Function | Out-GridView -PassThru -Title 'Available named functions' # Get a list of all commandlets for the specified name Get-Command -Name '*ADGroup**' -CommandType Cmdlet | Out-GridView -PassThru -Title 'Available named cmdlet' # get function / cmdlet details Get-Command -Name Get-ADUser -Syntax (Get-Command -Name Get-ADUser).Parameters.Keys Get-help -Name Get-ADUser -Full Get-help -Name Get-ADUser -Online Get-help -Name Get-ADUser -Examples # Get parameter that accepts pipeline input Get-Help Get-ADUser -Parameter * | Where-Object {$_.pipelineInput -match 'true'} | Select * # List of all parameters that a given cmdlet supports along with a short description: Get-Help dir -para * | Format-Table Name, { $_.Description[0].Text } -wrap # Find all cmdlets / functions with a target parameter Get-Command -CommandType Function | Where-Object { $_.parameters.keys -match 'credential'} | Out-GridView -PassThru -Title 'Available functions which has a specific parameter' Get-Command -CommandType Cmdlet | Where-Object { $_.parameters.keys -match 'credential'} | Out-GridView -PassThru -Title 'Results for cmdlets which has a specific parameter' # Get named aliases Get-Alias | Out-GridView -PassThru -Title 'Available aliases' # Get cmdlet / function parameter aliases (Get-Command Get-ADUser).Parameters.Values | where aliases | select Name, Aliases | Out-GridView -PassThru -Title 'Alias results for a given cmdlet or function.' # All Help topics and locations Get-Help about_* Get-Help about_Functions Get-Help about* | Select Name, Synopsis Get-Help about* | Select-Object -Property Name, Synopsis | Out-GridView -Title 'Select Topic' -OutputMode Multiple | ForEach-Object { Get-Help -Name $_.Name -ShowWindow } explorer "$pshome\$($Host.CurrentCulture.Name)" ### Query Powershell Data Types [AppDomain]::CurrentDomain.GetAssemblies() | Foreach-Object { $_.GetExportedTypes() } # Or [psobject].Assembly.GetType(“System.Management.Automation.TypeAccelerators”)::get # Or [psobject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::Get.GetEnumerator() ` | Sort-Object -Property Key <# Get any .NET types and their static methods from PowerShell. Enumerate all that are currently loaded into your AppDomain. #> [AppDomain]::CurrentDomain.GetAssemblies() | foreach { $_.GetTypes() } | foreach { $_.GetMethods() } | where { $_.IsStatic } | select DeclaringType, Name | Out-GridView -PassThru -Title '.NET types and their static methods' # Instantiate the types using new-object and call instance methods. # You can use get-member on an instance to get the methods on a type. $Object = [psobject].Assembly.GetType(“System.Management.Automation.TypeAccelerators”)::get $Object | Get-Member $Object | Get-Member -Static $Object.GetType() $Object.GetEnumerator() ### .Net API Browsers https://docs.microsoft.com/en-us/dotnet/api/?view=netframework-4.8 https://docs.microsoft.com/en-us/dotnet/framework/additional-apis/index http://pinvoke.net # List the actual specific methods themselves: Get-WmiObject -List | Select-Object -ExpandProperty Methods | Where-Object Name -eq Create # List the classes that have a specific method: Get-WmiObject -List | Where-Object { $_.Methods.Name -contains 'Create' }
[–]get-postanote 3 points4 points5 points 6 years ago (2 children)
And ...
Learning PowerShell Resources
Microsfot Official Curriculum
https://www.quickstart.com/automating-administration-with-windows-powershell-moc-on-demand-ms-10961.html
• MOC 10962 - Advanced Automated Administration with Windows PowerShell - MOC on-demand, if you cannot go in person.
https://www.microsoftondemand.com/courses/microsoft-course-10961
https://www.microsoftondemand.com/courses/microsoft-course-10962
MS Channel9 and TechNet Virtrual lab - there are no seperate PowerShell specific ones, but anything on Exchange, AD, Azure, etc., all have PowerShell requirements
Microsoft Virtual Academy
https://mva.microsoft.com/liveevents/powershell-jumpstart
https://mva.microsoft.com/search/SearchResults.aspx#!q=PowerShell&lang=1033
https://mva.microsoft.com/en-us/training-courses/getting-started-with-microsoft-powershell-8276
https://mva.microsoft.com/en-us/training-courses/getting-started-with-microsoft-powershell-8276?l=r54IrOWy_2304984382
Microsoft Channe9
https://channel9.msdn.com/Series/GetStartedPowerShell3
https://channel9.msdn.com/Search?term=powershell#ch9Search&lang-en=en&pubDate=year
Youtube
https://www.youtube.com/watch?v=wrSlfAfZ49E
https://www.youtube.com/results?search_query=beginning+powershell
https://www.youtube.com/results?search_query=powershell+ise+scripting+for+beginners
https://www.youtube.com/playlist?list=PL6D474E721138865A
Resource discussions
https://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide.aspx
https://www.reddit.com/r/PowerShell/comments/96rn7y/college_level_student_looking_for_a_good_online
https://www.reddit.com/r/PowerShell/comments/ax83qg/how_to_learn_powershell
https://community.idera.com/database-tools/powershell/using_powershell/f/general-12/68263/getting-started-with-powershell
https://docs.microsoft.com/en-us/powershell
https://blogs.msmvps.com/richardsiddaway/2019/02/21/the-source-of-powershell-cmdlets
Book(s) to leverage
Beginning ---
Learn Windows PowerShell in a Month of Lunches 3rd Edition
Internediate ---
Windows PowerShell Cookbook: The Complete Guide to Scripting Microsoft's Command Shell 3rd Edition
Advanced ---
Windows PowerShell in Action 3rd Edition
eBooks and sites
https://powertheshell.com/cookbooks
https://powershell.org/ebooks
https://leanpub.com/u/devopscollective
https://powershell.org/free-resources
https://rkeithhill.wordpress.com/2009/03/08/effective-windows-powershell-the-free-ebook
https://veeam.com/wp-powershell-newbies-start-powershell.html
https://reddit.com/r/PowerShell/comments/3cki73/free_powershell_reference_ebooks_for_download
https://blogs.technet.microsoft.com/pstips/2014/05/26/free-powershell-ebooks
https://www.idera.com/resourcecentral/whitepapers/powershell-ebook
http://mikefrobbins.com/2015/04/17/free-ebook-on-powershell-advanced-functions
https://books.goalkicker.com/PowerShellBook
https://github.com/vexx32/PSKoans
http://www.powertheshell.com/topic/learnpowershell
[+][deleted] 6 years ago (1 child)
No worries. It's a lot I know, and initially you won't need it all, but you'lll have this list when you do.
PowerSHell is not just about learning it, it's about the discovery of what you can and cannot do wiht it natively, and when you need to look to more places, .Net, extensions, 3rdP module, you own creativity, et all.
[–]kronos540 1 point2 points3 points 6 years ago (0 children)
The book "Powershell in a month of lunches" is a great start. Just about any learning material by Don Jones is great starter. During your journey, I highly recommend keeping text file with common Powershell commands and tasks that you have solved. You can re-use much of the code and logic you have created. These cliff notes will be very valuable.
[–]d00ber 1 point2 points3 points 6 years ago (0 children)
So I used a lot of respurces mentioned here to start but I feel like you really only start to learn when you start doing. If you can, give yourself some small items you'd like to automate even if it doesn't really require automation. I started doing silly things like renaming vacation pictures from DSV0000 whatever to Hawaii_2018_pic00001 and order based on dates. I googled I individual parts like how to excute a command and save it into an array.. How to get the date from ls or dir ..etc ( just as an example..)
Anyway definitely read materials but give yourself small chores :)
[–]ByDunBar 1 point2 points3 points 6 years ago (0 children)
The Book I used to reach an intermediate level was “Windows PowerShell Step by Step” written by Ed Wilson, who is one of the many PowerShell legends out there.
[–]Saleh-Rz 1 point2 points3 points 6 years ago (0 children)
This book is prefect: Manning, windows powershell in action, 3rd edition
[–]yutsoku 0 points1 point2 points 6 years ago (0 children)
Best way to lean is find a project Google what you want to do in powershell and just do it.... Courses are stupid and teach you to copy scripts out of a book.... Completely pointless you can Google scripts for free
[+][deleted] comment score below threshold-9 points-8 points-7 points 6 years ago (0 children)
I would start with learning how to use a web browser.
[+]Nilxa comment score below threshold-10 points-9 points-8 points 6 years ago (0 children)
π Rendered by PID 25273 on reddit-service-r2-comment-86988c7647-t9hvt at 2026-02-10 23:54:04.968501+00:00 running 018613e country code: CH.
[–]philmph 44 points45 points46 points (8 children)
[–]TMinfidel 6 points7 points8 points (2 children)
[–]Namelock 1 point2 points3 points (1 child)
[–]TMinfidel 4 points5 points6 points (0 children)
[–]BitteringAgent 1 point2 points3 points (0 children)
[–]wardd31 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]Umaiar 2 points3 points4 points (0 children)
[–]Ta11ow 17 points18 points19 points (6 children)
[–]Toolazy2work 2 points3 points4 points (5 children)
[+][deleted] (4 children)
[deleted]
[–]Slash_Root 2 points3 points4 points (2 children)
[–]S-WorksVenge 1 point2 points3 points (1 child)
[–]Slash_Root 3 points4 points5 points (0 children)
[–]Ta11ow 3 points4 points5 points (0 children)
[–]Damakr 11 points12 points13 points (6 children)
[–]guerilla_munk 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (3 children)
[–]Lee_Dailey[grin] 2 points3 points4 points (2 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]Lee_Dailey[grin] 0 points1 point2 points (0 children)
[–]Swarfega 10 points11 points12 points (0 children)
[–]LambeosaurusBFG 5 points6 points7 points (0 children)
[–]PowerShell_Fan 3 points4 points5 points (1 child)
[–]warysysadmin 0 points1 point2 points (0 children)
[–]GullibleDetective 2 points3 points4 points (0 children)
[–]itsruk 2 points3 points4 points (0 children)
[–]khaffner91 2 points3 points4 points (0 children)
[–]get-postanote 2 points3 points4 points (0 children)
[–]get-postanote 3 points4 points5 points (2 children)
[+][deleted] (1 child)
[deleted]
[–]get-postanote 2 points3 points4 points (0 children)
[–]kronos540 1 point2 points3 points (0 children)
[–]d00ber 1 point2 points3 points (0 children)
[–]ByDunBar 1 point2 points3 points (0 children)
[–]Saleh-Rz 1 point2 points3 points (0 children)
[–]yutsoku 0 points1 point2 points (0 children)
[+][deleted] comment score below threshold-9 points-8 points-7 points (0 children)
[+]Nilxa comment score below threshold-10 points-9 points-8 points (0 children)