SlideShare a Scribd company logo
Thomas Lee (tfl@psp.co.uk)
MCT and PowerShell MVP




POWERSHELL 101 – WHAT IS IT

AND 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?
 PowerShell is
   Microsoft’s task automation platform.
   Part of Microsoft’s Common Engineering Criteria
   Included with every version of Windows 7/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!
 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 101
PowerShell 101
Cmdlets   Objects   Pipeline
 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 
 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 supports:
   .NET objects
   COM objects
   WMI objects
 Syntax and usage vary
   So similar, yet so different
 LOTS more detail – just not in this session
 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
 Connects output from a cmdlet to the input of
  another cmdlet
 Combination of the all cmdlets etc makes a
  pipeline
Process
              Object


Get-Process
  Cmdlet
                        Pipe



                                     Sort-Object
PS C:>   Get-Process | Sort-Object     Cmdlet
 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
 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


DEMO
 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
 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 the variables in your current session
   ls Variable:
 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 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
 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
$ht = @{Firstname=“Thomas"; Surname="Lee";
Country="UK";Town="Cookham}
$ht | sort name | ft -a
Name      Value
----      -----
Surname   Lee
County    Berkshire
Town      Cookham
Firstname Thomas
Country   UK
 $ht = @{Firstname=“Thomas"; Surname="Lee";
    Country="UK";Town="Cookham}
   $ht.GetEnumerator() | sort name | ft -a
   Name      Value
   ----      -----
   Country   UK
   County    Berkshire
   Firstname Thomas
   Surname   Lee
   Town      Cookham
 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()
Operator Type                   Operator
Arithmetic operator             +, -, *, /, %
                                See: about_arithmetic operator
Assignment operators            =, +=, -=, *=, /=, %=
                                See: about_assignment_operators
Comparison Operators            -eq, -ne, -gt, -lt, -le, -ge, -like,
                                -notlike, -match, -notmatch
                                -band, -bor, -bxor,-bnot
                                See: about_comparison_operators
Logical Operators               -and, -or, -xor –not, !
                                See: about_logical_operators



Also See Get-Help      about_operators
Operator Type           Operator
Redirection operators   >, >> 2> 2>&1
                        See: get-help about-redirection
Split/Join operators    -split, -join
                        See: about_split,about_join
Type operators          -is, -isnot, -as
                        See: about_type_operators
Urinary operators       ++, --
Operator Function              Operator
Call                           &
Property dereference           .
Range Operator                 ..
Format operator                -f
Subexpression operator         $( )
Array Subexpression operator   @( )
Array operator                 ,
 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
   $name –eq "Thomas Lee"
 History
   Redirection etc a historical reality
 Keep the parser simple
 PowerShell does more than simple ">"!!
   Case insensitive vs. case sensitive comparisons
 Lots!
 Modules
   Way of managing PowerShell code in an enterprise
 Remoting
   1:1 or 1:many Remoting
 XML Support
   Native XML
 More, more, more
   Discover, discover, discover!
Objects,Variables, Types, etc


DEMO
 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
 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
 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
 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!
 Set up prompt
     Function prompt {“Psh`[$(pwd)]: “}
 Add personal aliases
     Set-Alias gh get-help
 Create PSDrives
     New-PsDrive demo file e:pshdemo
 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
 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
 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
 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
 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.
 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
 I will answer what I can now


 More questions – email me at:
  doctordns@gmail.com
THE END

More Related Content

What's hot (20)

PPTX
Docker intro
Oleg Z
 
PDF
Ansible, best practices
Bas Meijer
 
PDF
Jenkins tutorial
HarikaReddy115
 
PDF
Containers: The What, Why, and How
Sneha Inguva
 
PPTX
Introduction to chef
Damith Kothalawala
 
PPTX
Introduction to Ansible
CoreStack
 
PPTX
Docker and containerization
Amulya Saxena
 
PDF
CI/CD 101
djdule
 
PDF
Intégration continue et déploiement continue avec Jenkins
Kokou Gaglo
 
PDF
Introduction to Docker - VIT Campus
Ajeet Singh Raina
 
PDF
Giới thiệu docker và ứng dụng trong ci-cd
GMO-Z.com Vietnam Lab Center
 
PDF
JSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
Mario Heiderich
 
PPT
CI and CD with Jenkins
Martin Málek
 
PDF
Qemu Introduction
Chiawei Wang
 
PPTX
Shell scripting
simha.dev.lin
 
PPTX
Introduction to Docker - 2017
Docker, Inc.
 
PDF
Docker Container Introduction
Innfinision Cloud and BigData Solutions
 
PDF
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
SONG INSEOB
 
PDF
Jenkins
Roger Xia
 
Docker intro
Oleg Z
 
Ansible, best practices
Bas Meijer
 
Jenkins tutorial
HarikaReddy115
 
Containers: The What, Why, and How
Sneha Inguva
 
Introduction to chef
Damith Kothalawala
 
Introduction to Ansible
CoreStack
 
Docker and containerization
Amulya Saxena
 
CI/CD 101
djdule
 
Intégration continue et déploiement continue avec Jenkins
Kokou Gaglo
 
Introduction to Docker - VIT Campus
Ajeet Singh Raina
 
Giới thiệu docker và ứng dụng trong ci-cd
GMO-Z.com Vietnam Lab Center
 
JSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
Mario Heiderich
 
CI and CD with Jenkins
Martin Málek
 
Qemu Introduction
Chiawei Wang
 
Shell scripting
simha.dev.lin
 
Introduction to Docker - 2017
Docker, Inc.
 
Docker Container Introduction
Innfinision Cloud and BigData Solutions
 
오픈스택 기반 클라우드 서비스 구축 방안 및 사례
SONG INSEOB
 
Jenkins
Roger Xia
 

Viewers also liked (20)

PDF
PowerShell from *nix user perspective
Juraj Michálek
 
PDF
Gray Hat PowerShell - ShowMeCon 2015
Ben Ten (0xA)
 
PPT
Managing VMware with PowerShell - VMworld 2008
Carter Shanklin
 
PPTX
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
CODE BLUE
 
PPTX
Client side attacks using PowerShell
Nikhil Mittal
 
PPTX
PowerUp - Automating Windows Privilege Escalation
Will Schroeder
 
PPTX
I hunt sys admins 2.0
Will Schroeder
 
PPTX
PSConfEU - Offensive Active Directory (With PowerShell!)
Will Schroeder
 
PPTX
Building an Empire with PowerShell
Will Schroeder
 
PPT
Powershell Seminar @ ITWorx CuttingEdge Club
Essam Salah
 
PDF
Practical PowerShell Programming for Professional People - Extended Edition
Ben Ten (0xA)
 
PPTX
Office 365 & PowerShell - A match made in heaven
Sébastien Levert
 
PPTX
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Richard Calderon
 
PPTX
PowerShell Plus v4.7 Overview
Richard Giles
 
PPT
Windows Server 2008 (PowerShell Scripting Uygulamaları)
ÇözümPARK
 
PDF
Power on, Powershell
Roo7break
 
PPT
Managing Virtual Infrastructures With PowerShell
guesta849bc8b
 
PDF
PowerShell UIAtomation
Juraj Michálek
 
PPTX
Incorporating PowerShell into your Arsenal with PS>Attack
jaredhaight
 
PPTX
Getting Started With PowerShell Scripting
Ravikanth Chaganti
 
PowerShell from *nix user perspective
Juraj Michálek
 
Gray Hat PowerShell - ShowMeCon 2015
Ben Ten (0xA)
 
Managing VMware with PowerShell - VMworld 2008
Carter Shanklin
 
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
CODE BLUE
 
Client side attacks using PowerShell
Nikhil Mittal
 
PowerUp - Automating Windows Privilege Escalation
Will Schroeder
 
I hunt sys admins 2.0
Will Schroeder
 
PSConfEU - Offensive Active Directory (With PowerShell!)
Will Schroeder
 
Building an Empire with PowerShell
Will Schroeder
 
Powershell Seminar @ ITWorx CuttingEdge Club
Essam Salah
 
Practical PowerShell Programming for Professional People - Extended Edition
Ben Ten (0xA)
 
Office 365 & PowerShell - A match made in heaven
Sébastien Levert
 
Better, Faster, Stronger! Boost Your Team-Based SharePoint Development Using ...
Richard Calderon
 
PowerShell Plus v4.7 Overview
Richard Giles
 
Windows Server 2008 (PowerShell Scripting Uygulamaları)
ÇözümPARK
 
Power on, Powershell
Roo7break
 
Managing Virtual Infrastructures With PowerShell
guesta849bc8b
 
PowerShell UIAtomation
Juraj Michálek
 
Incorporating PowerShell into your Arsenal with PS>Attack
jaredhaight
 
Getting Started With PowerShell Scripting
Ravikanth Chaganti
 
Ad

Similar to PowerShell 101 (20)

PPTX
PowerShell-1
Saravanan G
 
PDF
PowerShell_LangRef_v3 (1).pdf
outcast96
 
PPT
Introduction to PowerShell
Salaudeen Rajack
 
PPTX
PowerShell 101
Thomas Lee
 
PPTX
Windows PowerShell
Sandun Perera
 
PDF
Sql Server & PowerShell
Aaron Shilo
 
PPT
NIIT ISAS Q5 Report - Windows PowerShell
Phan Hien
 
PPTX
Holy PowerShell, BATman! - dogfood edition
Dave Diehl
 
PPTX
learn ps new advance for all powershell.pptx
Ronnie Kapoor
 
PPTX
2016 spice world_london_breakout
Thomas Lee
 
PDF
Windows Powershell in Action 1st Edition Bruce G. Payette
zahithovor
 
PDF
Learn Powershell Scripting Tutorial Full Course 1dollarcart.com.pdf
ClapperboardCinemaPV
 
PDF
Windows Powershell in Action 1st Edition Bruce G. Payette
takabedembe
 
PPT
No-script PowerShell v2
Concentrated Technology
 
PDF
Windows Powershell in Action 1st Edition Bruce G. Payette
moudenongui20
 
PPTX
Introduction to powershell
Salaudeen Rajack
 
PPTX
Introduction to PowerShell and getting started
Ravikanth Chaganti
 
PPTX
Power shell training
David Brabant
 
PPTX
PowerShell 101 - What is it and Why should YOU Care!
Thomas Lee
 
PDF
Introduction to PowerShell
Boulos Dib
 
PowerShell-1
Saravanan G
 
PowerShell_LangRef_v3 (1).pdf
outcast96
 
Introduction to PowerShell
Salaudeen Rajack
 
PowerShell 101
Thomas Lee
 
Windows PowerShell
Sandun Perera
 
Sql Server & PowerShell
Aaron Shilo
 
NIIT ISAS Q5 Report - Windows PowerShell
Phan Hien
 
Holy PowerShell, BATman! - dogfood edition
Dave Diehl
 
learn ps new advance for all powershell.pptx
Ronnie Kapoor
 
2016 spice world_london_breakout
Thomas Lee
 
Windows Powershell in Action 1st Edition Bruce G. Payette
zahithovor
 
Learn Powershell Scripting Tutorial Full Course 1dollarcart.com.pdf
ClapperboardCinemaPV
 
Windows Powershell in Action 1st Edition Bruce G. Payette
takabedembe
 
No-script PowerShell v2
Concentrated Technology
 
Windows Powershell in Action 1st Edition Bruce G. Payette
moudenongui20
 
Introduction to powershell
Salaudeen Rajack
 
Introduction to PowerShell and getting started
Ravikanth Chaganti
 
Power shell training
David Brabant
 
PowerShell 101 - What is it and Why should YOU Care!
Thomas Lee
 
Introduction to PowerShell
Boulos Dib
 
Ad

More from Thomas Lee (8)

PPTX
Doing Azure With PowerShell
Thomas Lee
 
PPTX
2015 spice world_london_breakout
Thomas Lee
 
PPTX
Three cool cmdlets I wish PowerShell Had!
Thomas Lee
 
PPTX
2014 SpiceWorld London Breakout
Thomas Lee
 
PPTX
Formatting With PowerShell
Thomas Lee
 
PPTX
Top 10 PowerShell Features in Server 2012
Thomas Lee
 
PPTX
Coping with Murphy’s Law
Thomas Lee
 
PPTX
Deep dive formatting
Thomas Lee
 
Doing Azure With PowerShell
Thomas Lee
 
2015 spice world_london_breakout
Thomas Lee
 
Three cool cmdlets I wish PowerShell Had!
Thomas Lee
 
2014 SpiceWorld London Breakout
Thomas Lee
 
Formatting With PowerShell
Thomas Lee
 
Top 10 PowerShell Features in Server 2012
Thomas Lee
 
Coping with Murphy’s Law
Thomas Lee
 
Deep dive formatting
Thomas Lee
 

Recently uploaded (20)

PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PDF
July Patch Tuesday
Ivanti
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
July Patch Tuesday
Ivanti
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 

PowerShell 101

  • 1. Thomas Lee ([email protected]) MCT and PowerShell MVP POWERSHELL 101 – WHAT IS IT AND WHY IT MATTERS
  • 2.  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?
  • 3.  PowerShell is  Microsoft’s task automation platform.  Part of Microsoft’s Common Engineering Criteria  Included with every version of Windows 7/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!
  • 4.  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
  • 7. Cmdlets Objects Pipeline
  • 8.  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 
  • 9.  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
  • 10.  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
  • 11.  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
  • 12.  Connects output from a cmdlet to the input of another cmdlet  Combination of the all cmdlets etc makes a pipeline
  • 13. Process Object Get-Process Cmdlet Pipe Sort-Object PS C:> Get-Process | Sort-Object Cmdlet
  • 14.  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
  • 15.  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!
  • 16. Cmdlets, Objects, and the Pipeline DEMO
  • 17.  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
  • 18.  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 the variables in your current session  ls Variable:
  • 19.  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)
  • 20.  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
  • 21.  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
  • 22. $ht = @{Firstname=“Thomas"; Surname="Lee"; Country="UK";Town="Cookham} $ht | sort name | ft -a Name Value ---- ----- Surname Lee County Berkshire Town Cookham Firstname Thomas Country UK
  • 23.  $ht = @{Firstname=“Thomas"; Surname="Lee"; Country="UK";Town="Cookham}  $ht.GetEnumerator() | sort name | ft -a  Name Value  ---- -----  Country UK  County Berkshire  Firstname Thomas  Surname Lee  Town Cookham
  • 24.  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()
  • 25. Operator Type Operator Arithmetic operator +, -, *, /, % See: about_arithmetic operator Assignment operators =, +=, -=, *=, /=, %= See: about_assignment_operators Comparison Operators -eq, -ne, -gt, -lt, -le, -ge, -like, -notlike, -match, -notmatch -band, -bor, -bxor,-bnot See: about_comparison_operators Logical Operators -and, -or, -xor –not, ! See: about_logical_operators Also See Get-Help about_operators
  • 26. Operator Type Operator Redirection operators >, >> 2> 2>&1 See: get-help about-redirection Split/Join operators -split, -join See: about_split,about_join Type operators -is, -isnot, -as See: about_type_operators Urinary operators ++, --
  • 27. Operator Function Operator Call & Property dereference . Range Operator .. Format operator -f Subexpression operator $( ) Array Subexpression operator @( ) Array operator ,
  • 28.  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  $name –eq "Thomas Lee"
  • 29.  History  Redirection etc a historical reality  Keep the parser simple  PowerShell does more than simple ">"!!  Case insensitive vs. case sensitive comparisons
  • 30.  Lots!  Modules  Way of managing PowerShell code in an enterprise  Remoting  1:1 or 1:many Remoting  XML Support  Native XML  More, more, more  Discover, discover, discover!
  • 32.  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
  • 33.  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
  • 34.  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
  • 35.  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!
  • 36.  Set up prompt  Function prompt {“Psh`[$(pwd)]: “}  Add personal aliases  Set-Alias gh get-help  Create PSDrives  New-PsDrive demo file e:pshdemo  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
  • 37.  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
  • 38.  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
  • 39.  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
  • 40.  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.
  • 41.  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
  • 42.  I will answer what I can now  More questions – email me at: [email protected]