Hello from Day 2 of Microsoft TechEd 2013 North America! I just finished a session called "Powershell Unplugged" and it turned out to be really good, especially if you are the "teach yourself" type of person. Jeffery Snover outlined the tools built into Powershell 3.0 and the techniques that will help you figure out any piece of PS scripting that you may have a question about.

If you're unfamiliar with PowerShell, it's a built-in Microsoft scripting engine that runs from a DLL and functions like bash, batch, and VBS all in one. As you may gather, a very powerful tool for automation. But with so much functionality to manipulate the environment it can get a little confusing. Keeping track of every variable name and attribute is a tough job. Mr.Snover taught us "how to fish" in PowerShell and I wanted to share a few of the commands that will help both the beginner and the expert tackle PowerShell scripting (please forgive the "brain dump" format as these commands are my notes and can be easily plugged into Google for more info):

help about_*
Help searchterm
get-help get-process -examples
get-help get-process -Detailed
dir variable lists all variables
stop-process -id ##,##
stop-process -ErrorAction [Stop, SilentlyContinue, Inquire]

-whatif switch that can be used for simulation testing command that will only tell you what the command would do
-confirm prompt for confirmation before executing each part of the command

The PowerShell cmdlet understands "high impact" changes, such as killing processes that you didn't start (potentially killing the system) or rebooting the computer
$ConfirmPreference high, medium, low

Online help has most recent versions of all the help documentation built into PowerShell itself.