1 / 33

Introduction to Powershell

Basic. Introduction to Powershell. Basics. PS is a command line interpreter/scripting environment Designed for .Net Similar to C# Easy to instantiate .Net classes Standardized syntax PS is object based – not text based This includes pipeline processing

opa
Download Presentation

Introduction to Powershell

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basic Introduction to Powershell

  2. Basics • PS is a command line interpreter/scripting environment • Designed for .Net • Similar to C# • Easy to instantiate .Net classes • Standardized syntax • PS is object based – not text based • This includes pipeline processing • Reduces need for reading process to parse data • V1.0 does not naturally support remote execution.

  3. Start Powershell Start->Programs->Windows Powershell->Windows Powershell

  4. At the command line • Expressions • Cmdlet • PowerShell Functions • PowerShell Scripts • Native Windows Commands - Also - • Supports direct interpolation

  5. PS Drives • Let’s start by looking at the environment • PS Drives give you access to resources in a consistent manner – similar to Unix’s approach to files and devices • PS Drives provide access to folders/files, the registry, existing functions and variables etc • Enter the following at the command line:

  6. Get-PSDrive

  7. Experience exercise Enter the following lines at the command prompt and observe the behavior: #Key in this line and the rest below 54 (54 * 3 ) – 2 "Patrick is " + 54 Get-Date

  8. Operators • () {} - Grouping • ++ , -- Increment, decrement, respectively • + , - Unary operator • * or *= Multiplication. • / or /= Division. • % or %= Modulus • +or += Addition. • -  or -= Subtraction. • = Assigns a value to a variable • Standard rules of precedence apply.

  9. .Net CLR Types In .Net everything is an object.

  10. Powershell Data types

  11. Exploring on your own 129 + "1" "1" + 129 [int]"0129" + 1 [datetime]"10/20/2009" "We are meeting on " + get-date "We are meeting on " + (get-date)

  12. Expressions are objects • Let’s explore this by entering the following (120).GetType() "Patrick Bailey".GetType() "Patrick Bailey".ToUpper() “Pat has " + "Pat".Length + " letters." (Get-Date).AddYears(-5)

  13. Variables while we’re at it $a = 123.45 $a.GetType() $b = "Patrick" $b.GetType()

  14. Convenient here-string

  15. Arrays $a = 1,2,3,4,7,"How do you do", 9,(Get-Date) $a $a[2] $a[3..6] $a[-1]

  16. Hashtables $list = @{"St Paul" = [datetime]"10/20/2009"; ` "Minneapolis" = [datetime]"11/17/2009"} $list $list["St Paul"] Line continuation

  17. Cmdlets • Cmdlets are instances of .NET Framework classes; they are not stand-alone executables. • Cmdlets do not generally do their own parsing, error presentation, or output formatting. Parsing, error presentation, and output formatting are handled by the Windows PowerShell runtime. • Cmdlets process input objects from the pipeline rather than from streams of text, and cmdlets typically deliver objects as output to the pipeline. • Cmdlets are record-oriented because they process a single object at a time. http://msdn.microsoft.com/en-us/library/ms714395%28VS.85%29.aspx

  18. Cmdlet(A compiled application for the PS environment) • 131 Cmdlets in v1.0, 237+ in V2.0 • verb-noun naming (e.g. get-childitem) • Elements of a command : command -parameter1 -parameter2 arg1 arg2 Positional Argument Switch Parameter Command Name Parameter with argument Ref: http://technet.microsoft.com/en-us/library/dd315315.aspx

  19. Exploring datetime object

  20. Information about the system • Enter each of these and observe Get-Command Get-Command -Verb Set notepad Get-Process Get-Process notepad Get-Service -Name *sql* Ref: http://technet.microsoft.com/en-us/library/dd315315.aspx

  21. Some standard named params • -ErrorAction Behavior when an error occurs. Values include SilentlyContinue, Continue (defualt), Stop • -Confirm Before execution the command will ask user for continuation option. Mostly available with commands that alter resources. • -ErrorVariable Variable to assign error object to. • -WhatIf Describes the action that would be taken – does not execute command

  22. Try these one at a time… Set-Content demofile.txt "Hello`nThis is the second line." –Confirm Get-Content demofile.txt -OutVariabletxtContent $txtContent Remove-Item demofile.txt –WhatIf Remove-Item demofile.txt Remove-Item demofile.txt #yes this repeats it Remove-Item demofile.txt -ErrorActionSilentlyContinue

  23. Filter cmdlets and the pipeline • Most cmdlets, as you have seen, produce objects for their output. Literal values do the same. • Get-Member provides a listing of the public members of those objects • By default it displays public instance members

  24. Taking it one step further

  25. The pipeline • Similar to traditional scripting languages • BUT it “pipes” objects – specifically .Net objects • Access to data is through methods and properties – not string parsing* *Of course, any property of type string has the expected set of methods for returning modifications of the string.

  26. Examples of Get-Member "Pat winks" | Get-Member Get-Process | Get-Member [Int32] | Get-Member [Int32] | Get-Member –Static [Int32]::MaxValue

  27. A closer look notepad;notepad $plist = Get-Process notepad $p1 = $plist[0] $p1 | Get-Member $p1.HasExited Stop-Process -Id $p1.Id $p1.HasExited “It’s not rude to point”

  28. Filtering in action notepad;notepad;notepad Get-Process | Where-Object { $_.Name -eq "notepad" } Get-Process | Select-Object Handles, Id, ProcessName Get-Process -Name notepad | ForEach-Object { Stop-Process $_.Id }

  29. What was that? • Script blocks – think of them as anonymous methods or short inline scripts • $_ is similar to Perl’s use as the current value in process

  30. Group-Object

  31. Grouping Objectsget-childitem C:\temp | group-object extension

  32. Service Cmdlets • get-service • new-service • restart-service • set-service • stop-service • start-service

  33. Starting and Stopping a Service

More Related