PowerShell 101 - What is it and Why should YOU Care!

Post on 11-Apr-2017

57 views 0 download

Transcript of PowerShell 101 - What is it and Why should YOU Care!

PowerShell 101What is it and why should YOU care?

Thomas LeePartner, PS Partnership@DoctorDNS on Twitter

Agenda

• What IS PowerShell?• What are Cmdlets, Objects and the Pipeline?• PowerShell in Windows and Windows Applications• Why PowerShell Matters to YOU• Questions

Who am I?

• 17-time MVP – many on PowerShell• PowerShell Pioneer

– Into PowerShell from the get-go (Oct 2003)• Author

– PowerShell 2.0 bible with another book in probress• Trainer• Admin for PowerShell group on Spiceworks

Why PowerShell?

• PowerShell is the future of Windows administration

• PowerShell makes your life easier• PowerShell magnifies your effort• Let me show you how and why!

But First - What IS PowerShell?

• Microsoft’s Strategic Task Automation Platform for IT Pros• It contains

–Shell – think Unix like in terms of usefulness–Scripting Language – with the power of Perl or Ruby –Extensible – bring on the community

Looking at PowerShell

Cmdlets Objects Pipeline

Community

Discovery

PowerShell Language Features

What are Cmdlets?

• A unit of functionality – much like a Linux command• Implemented as a .NET Class

– Get some with PowerShell/Windows– Buy some – e.g. /n Software’s NetCmdlets– Find some – leverage the community efforts– Build your own – use C# and VS

Cmdlets (continued)

• Cmdlets named with a Verb-Noun syntax– Verbs are standard to aid discovery

• Cmdlets can have aliases– Built in or add your own– Aliases do NOT include parameter aliasing

• Cmdlets come from PowerShell, Windows, apps

Cmdlets (continued)

• Cmdlets take parameters• All parameters have parameter names that begin

with a ‘-’ • Some parameter names can be omitted• Tab completion is your friend!• Cmdlets are discoverable

Get-Help, Get-Command

Cmdlets and Modules

• Cmdlets/Functions packaged into modules• Modules can be dynamically loaded• You can develop your own modules

What are Objects?

• A computer abstraction of a real life thing– A process– An AD User– A folder

• In PowerShell everything is an object

Objects (continued)

• Objects have occurrences you manage– The processes running on a computer– The users in an OU– The files in a folder

• Objects dramatically simplifies scripting

PowerShell Object Support

• PowerShell supports:– .NET objects– COM objects– WMI objects– Custom Objects

• Syntax and usage vary – similar, yet different

Objects in PowerShell

• Cmdlets produce and consume objects– E.g. Get-Process produces objects of the type System.Diagnostics.Process

• Objects are discoverable–Get-Member tells you the what an object contains

• Refer to MSDN documentation for more detail

What Is The Pipeline?

• The pipeline connects cmdlets– One cmdlet outputs objects– Next cmdlet uses them as input

• Pipeline is not a new concept– Came From Unix/Linux– PowerShell Pipes objects not text

Why This Design Matters

• Simple to use – far easier to compose• Powerful in operation - PowerShell (and .NET) do the

heavy lifting• Improves integration of functionality stacks

– OS/Application/PowerShell base/Community efforts/etc.

Discovery

• A key concept in PowerShell• What you know helps you learn more• PowerShell built to be discoverable

Key Discovery Cmdlets

• Get-Command – helps you to find cmdlet/function names

• Get-Help – gets you details on a specific cmdlets/function

• Get-Member – pipe your output to Get-Member to discover what it is

CmdletsPipelineObjectsDiscovery

Demo Time

PowerShell Community

• You never walk alone => PowerShell ecosystem– Product teams– Vendors

• Various ways to engage with the community– Blogs– Twitter– Spiceworks PowerShell forum

PowerShell Language

• PowerShell has a language• This is used to create scripts, script cmdlets, etc.• Syntax similar to C#• Language contains features from Unix/Linux and others• You need to know the language to write scripts

PowerShell ISE

• A richer development environment• Does colour coding of syntax• Good editing features• Extensible

PowerShell is Everywhere

• Core modules come with Windows• Additional modules come with Windows features• More module come with Windows apps• Even more modules come from the community

How Do I Get PowerShell?

• V3 Built into Win8, Server 2012• V4 Built into Win 8.1, Server 2012 R2• V5 in Windows 10• V5.1 in Win10 AU and Server 2016• V6.0 Alpha available

Getting Modules

• Some built-in• Some come with Server feature and/or RSAT tools• Some downloadable (e.g. Azure)• Some 3rd party commercial• Use PowerShellGet module to find and install more!

So Why Does PowerShell Matter?

• Because it’s everywhere!• It’s faster for repetitive tasks• It’s repeatable and auditable• Less prone to error• It’s easy (once you get past the learning curve)

PowerShell Is Not Universal!

• Windows has over 300 console applications that you use to administer and manage aspects of Windows

• Many of these have NO equivalent in PowerShell• Examples include:

– Certutil– Slmgr.vbs/Ospp.vbs– Wevtutil.exe

Learning PowerShell

• Books/blogs/forums• Microsoft and other training courses• Get your company to sponsor a class• Learn by doing

So What Next?

• First, remove cmd.exe from your system– Use PowerShell everywhere

• Use PowerShell for as much as you can– Ask questions on Spiceworks

• Master PowerShell– Advance your career

Summary

• If you are an IT Pro in the Windows space you need to either– Learn PowerShell– Learn how to smile when you say ‘would you like fries with

that burger’