Thomas lee tfl@psp co uk mct and powershell mvp
This presentation is the property of its rightful owner.
Sponsored Links
1 / 42

PowerShell 101 – What is it And Why It matters PowerPoint PPT Presentation


  • 136 Views
  • Uploaded on
  • Presentation posted in: General

Thomas Lee ( [email protected] ) MCT and PowerShell MVP. PowerShell 101 – What is it And Why It matters. What is it/Why it Matters. What IS PowerShell? What are Cmdlets, Objects and the Pipeline? Language fundamentals How do I install and setup PowerShell> How do I use PowerShell?

Download Presentation

PowerShell 101 – What is it And Why It matters

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Thomas lee tfl@psp co uk mct and powershell mvp

Thomas Lee ([email protected])

MCT and PowerShell MVP

PowerShell 101 – What is itAnd Why It matters


What is it why it matters

What is it/Why it Matters

  • What IS PowerShell?

  • What are Cmdlets, Objects and the Pipeline?

  • Language fundamentals

  • How do I install and setup PowerShell>

  • How do I use PowerShell?

  • PowerShell profiles

  • Getting the most from PowerShell

  • Why does it matter?


What is powershell

What IS PowerShell?

  • PowerShell is

    • Microsoft’s task automation platform.

    • Part of Microsoft’s Common Engineering Criteria

    • Included with every version of Windows7/Server 2008 R2 (and as a OS patch for earlier versions)

  • In a couple of years, if you don’t know PowerShell you may not have a job as an IT Pro!


What s in powershell

What’s IN PowerShell

  • Shell

    • Unix like (console.exe)

    • Lightweight IDE (sort of VS Lite)

  • Scripting Language

    • Power of Perl/Ruby

  • Extensible

    • Create your own cmdlets/providers/types/etc

    • Leverage the community

  • Built on .NET and Windows

    • MS-centric/MS-focused


Powershell architecture

PowerShell Architecture


Remoting with powershell

Remoting with PowerShell


Powershell fundamentals

PowerShell Fundamentals

Cmdlets

Objects

Pipeline

PowerShell Language Features

Discovery

Community


What are cmdlets

What Are Cmdlets?

  • The fundamental unit of functionality

    • Implemented as a .NET Class

    • Get some, buy some, find some, or build your own

  • Cmdlets take parameters

    • Parameters have names (prefaced with “-”)

    • Parameter names can be abbreviated

  • Cmdlets can have aliases

    • Built in or add your own

    • Aliases do NOT include parameter aliasing 


What a re objects

What Are Objects?

  • A computer abstraction of a real life thing

    • A process

    • A server

    • An AD User

  • Objects have occurrences you manage

    • The processes running on a computer

    • The users in an OU

    • The files in a folder


Powershell object support

PowerShell Object Support

  • PowerShell supports:

    • .NET objects

    • COM objects

    • WMI objects

  • Syntax and usage vary

    • So similar, yet so different

  • LOTS more detail – just not in this session


What is the pipeline

What Is 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


What is the pipeline1

What IS the Pipeline

  • Connects output from a cmdlet to the input of another cmdlet

  • Combination of the all cmdlets etc makes a pipeline


The pipeline in action

The Pipeline In Action

Process Object

Get-Process Cmdlet

Pipe

Sort-Object Cmdlet

PS C:>Get-Process

|Sort-Object


Why this design matters

Why This Design Matters

  • Simple to use

    • Just string cmdlets/scripts/functions together

    • Simpler to write in many cases

  • Very powerful in operation

    • Lets PowerShell do the heavy lifting

  • Integrates functionality stacks

    • OS

    • Application

    • PowerShell Base

    • Community


Discovery and community

Discovery And Community

  • A key concept in PowerShell

  • Built-in help (Get-Help, Get-Command)

  • Automatic linking to online help

  • Huge PowerShell ecosystem – the community

    • Social networking: eg Twitter, Facebook, etc

    • Mailing lists and newsgroups

    • Web sites and blogs

    • User Groups

    • 3rd party support – free stuff coming!


Cmdlets objects and the pipeline

Cmdlets, Objects, and the Pipeline

dEMO


Variables

Variables

  • Variables contain objects during a session

  • Variables named starting with ‘$’

    • $myvariable = 42

  • Variable’s Type is implied (or explicit)

    • $myfoo = ls c:\foo

  • Variables can put objects into pipeline

    • $myfoo | format-table name

  • Variables can be reflected on

    • $myfoo | get-member

  • You can use variables in scripts and the command line


Built in variables

Built-in Variables

  • Some variables come with PowerShell

    • $PSVersionTable

    • $PSHome

  • Some variables tell PowerShell what to do

    • $WarningPreference

    • $MaximumHistoryCount

  • You can create variables in Profile(s) that persist

    • Using your profile (more later)

  • See variables

    • LS Variable:


Scalar values

Scalar Values

  • Scalar variable contains a single value

    • $i=42

  • Can use properties/methods directly

    • $i=42; $i.tostring("p")

  • Use to calculate a value for use in formatting

    • See more in discussion on Formatting (next session)


Array values

Array Values

  • Array variables contain multiple values/objects

  • Array members addressed with [], e.g. $a[0]

    • $a[0] is first item in array

    • $a[-1] is last item

  • Use .GetType()

    • $myfoo = LS c:\foo

    • $myfoo.gettype()

  • Array members can be one or multiple types

    • LS c:\ | Get-Member

  • Arrays used with loops


Hash table

Hash Table

  • Special type of an array

    • Also known as dictionary or property bag

  • Contains a set of key/value pairs

    • Values can be read automagically

      $ht=@{"singer"="Jerry Garcia“;

      "band"="Greatful Dead”}

      $ht.singer

  • Value can be another hash table!

  • See Get-Help about_hash_tables


Variable type

Variable Type

  • Variables can be implicitly typed

    • PowerShell works it out by default

    • $I=42;$i.gettype()

  • Variables can be explicitly typed

    • [int64] $i = 42

    • $i.gettype()

  • Typing an expression

    • $i = [int64] (55 – 13); $i.gettype()

    • $i = [int64] 55 – [int32] 13; $i.gettype()

    • $i = [int32] 55 – [int64] 13; $i.gettype()


Operators

Operators


More operators

More Operators


Special operators

Special Operators


Expressions

Expressions

  • Variables plus operators

    • Produce some value

    • Value can be an object too!

  • Simple expressions

    • $i+1; $j-1; $k*2, $l/4

  • Boolean expression

    • General format is: <value> -<operator> <value>

    • $a –gt $b


Why not use or etc

Why not use > or < etc??

  • History

    • Redirection etc a historical reality

  • Keep the parser simple

  • PowerShell does more than simple “>”!!

    • Case insensitive vs. case sensitive comparisons


What else

What else?

  • Lots!

  • Modules

    • Way of managing PowerShell code in an enterprise

  • Remoting

    • 1:1 or 1:many Remoting

  • XML Support

    • Native XML

  • More, more, more

    • Attend some great training


Objects variables types etc

Objects,Variables, Types, etc

dEMO


How do i install powershell

How Do I Install PowerShell?

  • Built in to Win7, Server 2008 R2

    • On Server, add ISE Feature

    • On Server Core PowerShell – add feature (and .NET)

  • Down-level operating systems

    • Shipped as an OS Patch with WinRM – KB 968929

    • Get it from the net - http://tinyurl.com/pshr2rtm

    • NB: Different versions i386 vs x64, XP/Vista/2008

    • No version for IA64 or Windows 2000(Or earlier)

    • Beware of search engine links to beta versions


How do i use powershell

How Do I Use PowerShell?

  • From the Console

    • Start/PowerShell

  • From the PowerShell ISE

    • Start/PowerShellISE

  • Part of an application

    • GUI layered on PowerShell

    • Application focused console

  • Third Party IDEs

    • PowerShell Plus

    • PowerGUI


How do i configure powershell

How Do I Configure PowerShell

  • Add third party tools

    • There are lots!

  • Using Built-in tools

    • This will vary with what OS you use and which applications you are running

  • Configure PowerShell using Profiles


What are profiles

What are Profiles?

  • Special scripts that run at startup

  • Multiple Profiles

    • Per User vs. Per System

    • Per PowerShell Console vs. for ALL consoles

    • ISE profile – just for ISE

  • Creating a profile

  • Leveraging other people’s work

  • If you use it - stick it in your profile!


Common profile contents

Common Profile Contents

  • Set up prompt

    • Function prompt {“Psh`[$(pwd)]: “}

  • Add personal aliases

    • Set-Alias gh get-help

  • Create PSDrives

    • New-PsDrive demo file e:\psh\demo

  • Set size/title of of PowerShell console

    • $host.ui.rawui.WindowTitle = "PowerShell Rocks!!!"

    • $host.ui.rawui.buffersize.width=120

    • $host.ui.rawui.buffersize.height=9999

    • $host.ui.rawui.windowsize.width=120

    • $host.ui.rawui.windowsize.height=42


Getting more from powershell

Getting More From PowerShell

  • Start with replacing CMD.Exe with PowerShell

  • Get some good training

  • Use shared code where possible

  • Use great tools

  • Don’t re-invent the wheel

  • Leverage the community


Powershell training

PowerShell Training

  • Official MOC

    • 6434 – 3 day based on PowerShell V1

    • 10325 – upcoming 5 day course (due 8/10)

  • PowerShell Master Class

    • http://www.powershellmasterclass.com

  • New Horizons CWL

    • V2 course coming


Resources

Resources

  • Use your favorite search engine!!!

  • PowerShell Owner’s Manual

    • http://technet.microsoft.com/en-us/library/ee221100.aspx

  • PowerShell – Getting Started Guide

    • http://tinyurl.com/pshgsg

  • PowerShell references

    • http://www.reskit.net/psmc


And for your dev trainers

And for your dev trainers…

  • PowerShell is not just an IT Pro tool

  • Developers need it too

    • Build cmdlets

    • Build providers

    • Build Management GUIs

  • More on this topic in some other day.


Let s summarise

Let’s Summarise

  • PowerShell:

    • Combines cmdlets, objects and the pipeline

    • Provides a programming language and many more features we’ve not looked at today

    • Enables local and remote management

    • Is easy to get and easy to customise via profiles

    • Is supported by discovery and a vibrant community

  • PowerShell is the future of managing Windows and Windows applications


Now for the free stuff

Now For The FREE Stuff!

Sorry but this offer has now closed and the winners chosen.

However, see the .scripting newsgroup for more info

on both PowerShell and on an offer from Idera!

  • I have free copies of PowerShell Pro

    • Idera’s PowerShell Development Tool

  • The first 25 folks to email me will get a link to download the software (and a license).

  • I gave you the email address at the start of this presentation

  • The codeword is “POWERSHELLROCKS!”

  • The first 25 to mail that code word to the address I gave earlier will win their prixe!


Questions

Questions?

  • I will answer what I can now

  • More questions – email me at: [email protected]

  • Or use the .Scripting MCT newsgroup


The end

The End


  • Login