There are lots of solid references available. What are the best is a matter of opinion. This is why rankings on books, say on Amazon and other sites that allow user ratings vary can vary wildly. You too will have your take on the topics when you read them. My suggestion is first do some - free - live video beginner training via Microsoft virtual academy, and even on Youtube. Be sure to follow the authors blogs mentioned in the references below as well.
After reviewing a few of these, video sessions. It will help shed a clearer light on the materials in books and articles you’ll read later. Use what you gain from there as a lead in to what follow-up reference(s), free and paid.
We’re extremely fortunate to be able to offer a set of free e-books related to key PowerShell topics. Authored by community experts and curated by members of the community, these are updated pretty regularly - so it’s worth checking back for new editions every few months.
Normally the ones you’ll see most recommend:
Learn Windows PowerShell in a Month of Lunches 3rd Edition
Donald W. Jones (Author), Jeffrey Hicks (Author)
Windows PowerShell Cookbook: The Complete Guide to Scripting Microsoft’s Command Shell 3rd Edition
Lee Holmes (Author)
Windows PowerShell in Action 3rd Edition
by Bruce Payette (Author), Richard Siddaway (Author)
See also, this guidance.
Windows PowerShell Survival Guide
Purpose of this Document
The purpose of this document is to help you to learn more about PowerShell and to be successful in applying it. This document seeks to point to the best content on the web to enable you to reach that goal.
Scope of this Document
This page contains links to help you learn more about Microsoft Windows PowerShell. This includes PowerShell fundamentals as well as how PowerShell is used in Windows applications and services. As long as it’s PowerShell related, we’ll try to point to it! The document is also version agnostic, and contains information about current and future versions of PowerShell.
Lastly, thoroughly read / re-read and understand built-in the help files and review all the scripts on your machine.
# Get parameters, examples, full and Online help for a cmdlet or function
(Get-Command -Name Get-Content).Parameters
Get-help -Name Get-Content -Examples
Get-help -Name Get-Content -Full
Get-help -Name Get-Content -Online
# Find all cmdlets / functions with a target parameter
Get-Help * -Parameter Append
# All Help topics locations
Learn by doing, not just reading. Use PowerShell every day. If you find yourself jumping to cmd.exe, stop, and switch to PowerShell. Don’t make up scenarios, follow some of the forums and try to see if you can resolve the questions being asked.