Introduction to PowerShell

1,254 views

Published on

Introduction to PowerShell presentation for the NYC SharePoint Developers user group on 2011-09-21.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,254
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
106
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introduction to PowerShell

  1. 1. Boulos DibSeptember 21, 2011
  2. 2.  Independent Consultant – Napeague Inc. Software Development since 1983 Few Facts (@boulosdib)  First Personal Computer 1980 – TRS-80 III  First Z80 based product (EPROM based Protocol Adpator – 1984)  First Commercial PC-DOS product (Telex on PCs – 1985)  Started 16-bit Windows Development using Win 3.1  Developed on: 8080/Z80, 68xxx, PDP/RSX,VAX-VMS and x86/x64 (C/C++/C#)  Worked with PowerShell since Monad (2006)  Worked with SharePoint since STS (2003)  More facts ▪ Favorite sport – Windsurfing  ▪ Favorite hobby – Playing my sunburst Fender Stratocaster+ guitar. ▪ Favorite guitar players ▪ Wes Montgomery, Larry Carlton and Ritchie Blackmore (Deep Purple, Rainbow)
  3. 3.  Overview of PowerShell Introduction to PowerShell Scripting Language Tools Script Authoring SharePoint Management Console SharePoint CmdLets
  4. 4.  NYC Code Camp  I will be presenting on LightSwitch and Silverlight at the NYC Code Camp 6 (Autumn 2011)  Saturday October 1st  Pace University  Registration Still Open  http://CodeCampNyc.org
  5. 5.  Interactive Command Shell Programmatic (Script) Execution Environment Dynamic Scripting Language Extensible (CmdLets, .Net etc…) Hosted (i.e. NuGet) Management tool for Servers
  6. 6. “A shell is the piece of software that lets you access thefunctionality provided by the operating system. “Bruce Payette - Co-Designer and Implementer of thePowerShell language. Example  Windows Explorer  Command.com  Cmd.exe  Bash (Unix)  PowerShell
  7. 7.  Interactive Environment with .Net Automation Tool Easy to use Available on all Windows SKUs starting with XP SP2 and Windows 2003 Management tool for Servers Productivity Gains – One Liner
  8. 8. Source:Wikipedia
  9. 9.  Common Parameters  -Verbose  -Debug  -WarningAction  -WarningVariable  -ErrorAction  -ErrorVariable  -OutVariable  -OutBuffer Risk Mitigation Parameters (certainly critical in a production environment)  What-If  -Confirm Wildcard support.  All names and parameter value can support wildcard. Pipeline  Much more about this later.
  10. 10.  Command vs. Expression mode parsing  Echo 1+1  1+1 Everything returns a value  “String” Variable  $ Prefix  i.e. $var = “Hello Sharepoint” Type System  All .Net types as well as Custom Types
  11. 11.  Help Get-Help (or -? Following any command) Get-Help about_<<anyname>> Get-Help –Examples Get-Help –Full
  12. 12.  High level task oriented abstraction Verb-XXNoun  Verbs: Get, Set, New, Write, Read  Nouns: Drive, Variable, Provider, Site, Collection Get-Verb Predefined Commands When Starting Remember these:  Get-Help  Get-Member  Get-Command
  13. 13.  Get-Help  As it says, it helps!!! Get-Command  Get information about what can be invoked Get-Member  Show what can be done with an object Get-Module  Show packages of commands GetType  Discover details about an object’s type information.
  14. 14.  Compare Foreach Group Measure Select Sort Tee Where
  15. 15.  PowerShell ISE  Simple Editor and Debugger PowerGUI  Administrative Console  PowerGUI Editor  Powerpacks – a number to choose from. Visual Studio Notepad
  16. 16.  Out-Host Out-Null Out-Printer Out-String Out-GridView
  17. 17.  The best part about PowerShell  Output of one CmdLet is Input into next CmdLet in pipeline.  Uses the Pipe operator |  Output and Input are objects, not text like traditional shells.  Example ▪ Get-Command | Get-Member ▪ Get-Process | Out-GridView
  18. 18.  Case-Insensitive Variables: begin with $ (i.e. $a = “test”) Script Blocks using {} Array $a = 1,2,3  $a[1] Hashtable  $h = @{a=1; b=2} Scope – Functions and Script Blocks Security Context aware Remoting - WSMan
  19. 19.  If then else  If ($a –eq “test”) { “It’s a test”} else {“Not”} While loop and Do While loop  $i = 1; While ($i –lt 10) {$i++}  $i =5; do {$i} while (--$i) For loop  for ($i=0; $i –lt 10; $i++) { “5 * $i is $(5 * $i)” } Foreach loop  Foreach ($i in 1..10) {“`$i is $i”}
  20. 20.  Foreach CmdLet  1..10 | ForEach-Object {“begin”} {$_ * 2} {“end”} Where Cmdlet  1..10 | Where-Object {$_ -gt 4 -and $_ -lt 10}
  21. 21.  Arithmetic Operators  +*-/% Assignment Operators  =, +=, -=, *=, /=, %=
  22. 22.  Get-Location and SetLocation Copy-Item Remove-Item Move-Item Rename-Item Set-Item New-Item Get-Content
  23. 23.  Pretty much the same as CMD  > replace file  >> Append to file  2> File is replaced with error messages  2>> Error text is appended to file  2>&1 Error messages are written to output pipe
  24. 24.  A module is a package that contains Windows PowerShell commands, such as cmdlets, providers, functions, variables, and aliases Need to create module folder  new-item -type directory -path $homeDocumentsWindowsPowerShell Modules Copy the module to the Modules folder. Start using a module (import-module etc…)
  25. 25.  Standard Providers  Windows PowerShell providers are Microsoft .NET Framework-based programs that make the data in a specialized data store available in Windows PowerShell so that you can view and manage it Get-PSProvider | Select -Property Name  WSMan -  Alias  Environment  FileSystem  Function  Registry  Variable  Certificate
  26. 26.  Get-PSDrive New-PSDrive  New-PSDrive -Name Y -PSProvider FileSystem -Root c:temp Remove-PSDrive  Remove-PSDrive Try a non-disk PSDrive like cert: Dir Cert:
  27. 27.  A Script file is a text file with .ps1 extension containing one or more PowerShell command A Script is a simple mechanism to re-use functionality. To run a script on a remote computer, use the Invoke-Command and provide remote computer name as a parameter. Scripts can accept parameters. To run a script in the current session, we Dot- Source the . .Script1.ps1 We can Scope Local or Global.
  28. 28.  Single Line: # Multi Line:  <#  #> Comments can be used to automatically generate help
  29. 29.  A function is a script block containing list of statements function small_files ($size = 1kB) { Get-ChildItem c:Temp | where { $_.length -lt $size -and !$_.PSIsContainer} } small_files To control how a function uses the pipeline, you use Begin, Process and End. function pipelineFunc {  process {"The value is: $_"} } 1,2,3 | pipelineFunc Advanced functions allow you to write CmdLets using scripts instead of compiled code.
  30. 30.  try { $wc = new-object System.Net.WebClient $wc.DownloadFile("http://www.contoso.com/MyDoc.doc","c:MyDoc.doc") } catch [System.Net.WebException],[System.IO.IOException] { "unable to download MyDoc.doc from http://www.contoso.com." } catch { "An error occurred that could not be resolved." }
  31. 31.  Sharepoint Management Shell Need to execute Add-SPShellAdmin in order to acquire permissions to run PowerShell on Sharepoint Member of Farm Member of AdministratorsFarm component Administrators SharePoint Full Control on backup folder group on the local computer groupFarm Yes No YesService application Yes No YesContent database Yes No YesSite collection No Yes YesSite, list, document library Yes No YesSource: MSDN
  32. 32.  Get-Command -Noun SP* (Get-Command –Name *-SP* - CommandType cmdLet).Count
  33. 33.  $Host.Runspace.ThreadOptions = "ReuseThread" Get-SPAssignment –Global  $spWeb = Get-SPWeb -Identity $url  $spWeb.TreeViewEnabled = $True  $spWeb.Update() Stop-SPAssignment –Global
  34. 34.  Windows Powershell Blog  http://blogs.msdn.com/b/powershell/ Doug Finke – MVP (Also ShowUI)  http://dougfinke.com/blog/ PowerShell Magazine  http://www.powershellmagazine.com/ Jim Christopher MVP (Check out StudioShell)  http://www.beefycode.com/ Tome Tanasovski MVP/Author – NYC PowerShell User Group  http://powertoe.wordpress.com/
  35. 35.  Productivity  PowerGUI http://PowerGUI.org  PowerTab http://powertab.codeplex.com/  Community Extensions http://pscx.codeplex.com  Quest ActiveRoles Management Shell http://www.quest.com/powershell/activeroles-server.aspx UI  ShowUI (WPF) – http://showui.codeplex.com
  36. 36. Tool UrlPowerGUI http://PowerGUI.org/PowerTab http://powertab.codeplex.com/Community Extensions http://pscx.codeplex.com/Quest ActiveRoles http://www.quest.com/powershell/activeroles- server.aspx/ShowUI http://showui.codeplex.com/Windows Automation Snaping for http://wasp.codeplex.com/Powershell
  37. 37.  NuGet  http://nuget.org/  http://nuget.codeplex.com/ StudioShell  http://studioshell.codeplex.com/
  38. 38.  PowerShell in Action  Windows PowerShell 2.0 Bible Bruce Payette  By Thomas Lee, Karl Mitschke, Mark “The book from the authority on E. Schill, and Tome Tanasovski PowerShell”  http://powertoe.wordpress.com/
  39. 39.  Automating Microsoft SharePoint  PowerShell for Microsoft Sharepoint 2010 Administration with Windows 2010 Administrators. PowerShell 2.0 Gary Lapointe & Shannon Bray  Niklas Goude & Mattias Karlsson http://blog.falchionconsulting.com/  http://www.powershell.nu/
  40. 40.  Next session will be about PowerShell Scripts in the SharePoint Management Shell Contact:  http://blog.boulosdib.com  @boulosdib

×