Boulos Dib November 16, 2011 http://blog.boulosdib.com @boulosdib
PS> Describe-Presenter  Independent Consultant – Napeague Inc.  Professional Software Development since 1983  Few Facts  First Personal Computer 1980 – TRS-80 III  First Z80 based product (EPROM based Protocol Adaptor – 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)
Agenda  Quick PowerShell Review  SharePoint 2010 Management Shell  PowerShell (Functions, CmdLet)  SharePoint CmdLets by Group  Best Practices  Sample Scripts  Tools  Resources
PowerShell Review  Interactive Command Shell  Programmatic Execution Environment  Dynamic Scripting Language  Extensible (CmdLets, .Net etc…)  Hosted (i.e. NuGet/PowerGUI vsix)  Management tool for Servers
Review - What is a shell “A shell is the piece of software that lets you access the functionality provided by the operating system. “ Bruce Payette - Co-Designer and Implementer of the PowerShell language.  Example  Windows Explorer  Command.com  Cmd.exe  Bash (Unix)  PowerShell
Review - Consistent Environment  Common Parameters  -Verbose  -Debug  -WarningAction  -WarningVariable  -ErrorAction  -ErrorVariable  -OutVariable  -OutBuffer  Risk Mitigation Parameters (certainly critical in a production environment)  What-If  -Confirm  Whildcard support.  All names and parameter value can support wildcard.  Pipeline
Where do I start  Verb-XXNoun  Verbs: Get, Set, New, Write, Read  Nouns: Drive, Variable, Provider, Site, Collection  Most important command  Get-Help  Get-Help *  Get-Help *drive*  Get-Member  Get-Command
PowerShell  Functions  Scripts  Error Handling  Parameters  Splatting  Remoting  PSSession
Functions  Functions is a script block containing list of statements  function small_files ($size = 100MB) {  Get-ChildItem c: | where { $_.length -lt $size -and !$_.PSIsContainer}  }  To control how a function uses the pipeline, you use Begin, Process and End.  function pipelineFunction {  process {"The value is: $_"} } 1,2,3 | pipelineFunction  Advanced functions allow you to write CmdLets using scripts instead of compiled code.
Scripts  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.
Error Handling  Terminating vs. Nonterminating Errors  Trap  Throw – Sometime useful for parameters  function hi ($name=$(throw '$name is required')) {"Hi $name"}
Errors Handling – as in C#  try  {  $wc = new-object System.Net.WebClient  $wc.DownloadFile("http://www.contoso.com/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."  }
Snapins, Providers and Drives  Get-PSProvider | Format-List Name, PSSnapin  Get-PSSnapin  Get-PSProvider  Get-PSDrive
PowerShell Modules  Get-Module –ListAvailable  Import-Module ActiveDirectory
SharePoint Management Shell  SharePoint Management Shell differs slightly from the Standard PowerShell:  Runspace Threading  $Host.Runspace.ThreadOptions = "ReuseThread“  SharePoint Specific Snap-In  Add-PSSnapin Microsoft.SharePoint.PowerShell
Threading & Proper Object Disposal  $Host.Runspace.ThreadOptions = "ReuseThread"  Get-SPAssignment –Global  $spWeb = Get-SPWeb -Identity $url  $spWeb.TreeViewEnabled = $True  $spWeb.Update()  Stop-SPAssignment –Global
Sharepoint CmdLets Groups  Farm  Application  Solution  Site Collection  Site  List and ListItem
Farm  Backup-SPFarm  Get-SPFarm  Restore-SPFarm
Web Application  Get-SPWebApplication  New-SPWebApplication  Remove-SPWebApplication  Set-SPWebApplication
Solutions  Get-SPSolution  Add-SPSolution  Remove-SPSolution  Install-SPSolution  UnInstall-SPSolution  Update-SPSolution
Site Collections  Backup-SPSite  Get-SPSite  Move-SPSite  New-SPSite  Remove-SPSite  Restore-SPSite  Set-SPSite
Sites  Export-SPWeb  Get-SPWeb  Import-SPWeb  New-SPWeb  Remove-SPWeb  Set-SPWeb
Tools - Productivity Tool Url PowerGUI 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 Snapin http://wasp.codeplex.com/ for PowerShell
Visual Studio Hosted  NuGet  http://nuget.org/  http://nuget.codeplex.com/  PowerGUI vsix  http://powerguivsx.codeplex.com/  StudioShell  http://studioshell.codeplex.com/
Books – PowerShell  PowerShell in Action  Windows PowerShell 2.0 Bible  Bruce Payette  By Thomas Lee, Karl Mitschke,  “The book from the authority on Mark E. Schill, and Tome PowerShell” Tanasovski  http://powertoe.wordpress.com/ (Tome’s blog)
Books – PowerShell & SharePoint  Automating Microsoft SharePoint  PowerShell for Microsoft 2010 Administration with Windows Sharepoint 2010 Administrators. PowerShell 2.0  Gary Lapointe & Shannon Bray  Niklas Goude & Mattias Karlsson  http://blog.falchionconsulting.com/  http://www.powershell.nu/  http://mysharepointofview.com/  http://sppowershell.com/

PowerShell for SharePoint Developers

  • 1.
    Boulos Dib November 16, 2011 http://blog.boulosdib.com @boulosdib
  • 2.
    PS> Describe-Presenter  IndependentConsultant – Napeague Inc.  Professional Software Development since 1983  Few Facts  First Personal Computer 1980 – TRS-80 III  First Z80 based product (EPROM based Protocol Adaptor – 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.
    Agenda  Quick PowerShellReview  SharePoint 2010 Management Shell  PowerShell (Functions, CmdLet)  SharePoint CmdLets by Group  Best Practices  Sample Scripts  Tools  Resources
  • 4.
    PowerShell Review  InteractiveCommand Shell  Programmatic Execution Environment  Dynamic Scripting Language  Extensible (CmdLets, .Net etc…)  Hosted (i.e. NuGet/PowerGUI vsix)  Management tool for Servers
  • 5.
    Review - Whatis a shell “A shell is the piece of software that lets you access the functionality provided by the operating system. “ Bruce Payette - Co-Designer and Implementer of the PowerShell language.  Example  Windows Explorer  Command.com  Cmd.exe  Bash (Unix)  PowerShell
  • 6.
    Review - ConsistentEnvironment  Common Parameters  -Verbose  -Debug  -WarningAction  -WarningVariable  -ErrorAction  -ErrorVariable  -OutVariable  -OutBuffer  Risk Mitigation Parameters (certainly critical in a production environment)  What-If  -Confirm  Whildcard support.  All names and parameter value can support wildcard.  Pipeline
  • 7.
    Where do Istart  Verb-XXNoun  Verbs: Get, Set, New, Write, Read  Nouns: Drive, Variable, Provider, Site, Collection  Most important command  Get-Help  Get-Help *  Get-Help *drive*  Get-Member  Get-Command
  • 8.
    PowerShell  Functions  Scripts Error Handling  Parameters  Splatting  Remoting  PSSession
  • 9.
    Functions  Functions isa script block containing list of statements  function small_files ($size = 100MB) {  Get-ChildItem c: | where { $_.length -lt $size -and !$_.PSIsContainer}  }  To control how a function uses the pipeline, you use Begin, Process and End.  function pipelineFunction {  process {"The value is: $_"} } 1,2,3 | pipelineFunction  Advanced functions allow you to write CmdLets using scripts instead of compiled code.
  • 10.
    Scripts  A Scriptfile 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.
  • 11.
    Error Handling  Terminatingvs. Nonterminating Errors  Trap  Throw – Sometime useful for parameters  function hi ($name=$(throw '$name is required')) {"Hi $name"}
  • 12.
    Errors Handling –as in C#  try  {  $wc = new-object System.Net.WebClient  $wc.DownloadFile("http://www.contoso.com/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."  }
  • 13.
    Snapins, Providers andDrives  Get-PSProvider | Format-List Name, PSSnapin  Get-PSSnapin  Get-PSProvider  Get-PSDrive
  • 14.
    PowerShell Modules  Get-Module–ListAvailable  Import-Module ActiveDirectory
  • 15.
    SharePoint Management Shell SharePoint Management Shell differs slightly from the Standard PowerShell:  Runspace Threading  $Host.Runspace.ThreadOptions = "ReuseThread“  SharePoint Specific Snap-In  Add-PSSnapin Microsoft.SharePoint.PowerShell
  • 16.
    Threading & ProperObject Disposal  $Host.Runspace.ThreadOptions = "ReuseThread"  Get-SPAssignment –Global  $spWeb = Get-SPWeb -Identity $url  $spWeb.TreeViewEnabled = $True  $spWeb.Update()  Stop-SPAssignment –Global
  • 17.
    Sharepoint CmdLets Groups Farm  Application  Solution  Site Collection  Site  List and ListItem
  • 18.
  • 19.
    Web Application  Get-SPWebApplication New-SPWebApplication  Remove-SPWebApplication  Set-SPWebApplication
  • 20.
    Solutions  Get-SPSolution  Add-SPSolution Remove-SPSolution  Install-SPSolution  UnInstall-SPSolution  Update-SPSolution
  • 21.
    Site Collections  Backup-SPSite Get-SPSite  Move-SPSite  New-SPSite  Remove-SPSite  Restore-SPSite  Set-SPSite
  • 22.
    Sites  Export-SPWeb  Get-SPWeb Import-SPWeb  New-SPWeb  Remove-SPWeb  Set-SPWeb
  • 23.
    Tools - Productivity Tool Url PowerGUI 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 Snapin http://wasp.codeplex.com/ for PowerShell
  • 24.
    Visual Studio Hosted NuGet  http://nuget.org/  http://nuget.codeplex.com/  PowerGUI vsix  http://powerguivsx.codeplex.com/  StudioShell  http://studioshell.codeplex.com/
  • 25.
    Books – PowerShell PowerShell in Action  Windows PowerShell 2.0 Bible  Bruce Payette  By Thomas Lee, Karl Mitschke,  “The book from the authority on Mark E. Schill, and Tome PowerShell” Tanasovski  http://powertoe.wordpress.com/ (Tome’s blog)
  • 26.
    Books – PowerShell& SharePoint  Automating Microsoft SharePoint  PowerShell for Microsoft 2010 Administration with Windows Sharepoint 2010 Administrators. PowerShell 2.0  Gary Lapointe & Shannon Bray  Niklas Goude & Mattias Karlsson  http://blog.falchionconsulting.com/  http://www.powershell.nu/  http://mysharepointofview.com/  http://sppowershell.com/