1 / 32

PowerShell For SharePoint Developers

PowerShell For SharePoint Developers. Neil Iversen Inetium http://justaddcode.com. The Plan. PowerShell Introduction Basic Syntax Not-So-Basic Syntax SharePoint Using the SharePoint Object Model Debugging Code using PowerShell Showing Off SharePoint Specific? (Providers,…) Questions.

michon
Download Presentation

PowerShell For SharePoint Developers

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. PowerShell For SharePoint Developers Neil Iversen Inetium http://justaddcode.com

  2. The Plan • PowerShell • Introduction • Basic Syntax • Not-So-Basic Syntax • SharePoint • Using the SharePoint Object Model • Debugging Code using PowerShell • Showing Off • SharePoint Specific? (Providers,…) • Questions

  3. Why PowerShell for Developers? • Better visibility into the Object Model • Find all the instances of a content type in a Site • Automated or repetitive tasks • Add a web part to a page on 500 sites • Faster Development Cycle

  4. Developing Faster • Traditional SharePoint Development • Time wasted during Testing • PowerShell / .NET Hybrid Development • ‘Risky’ development done in PoSH • Code converted to .NET (C#/VB) • Shorter Deploy/Test Cycle

  5. What is PowerShell? • Different things to different people • It’s a • Shell • Cool .bat file • VBScript replacement • Admin’s Best Friend • Developer’s Best Friend • …

  6. cmd.exe

  7. +

  8. unix cmdline

  9. +

  10. .net

  11. =

  12. An ugly by powerfull shell

  13. Getting Around • ls • cd • rm • mkdir • man • dir • cd • del • Mkdir • help

  14. Core Components • Alias • cd = set-location • Dir = get-childitem • Cmdlet • Workhorse of PowerShell • Function • Block of script • Provider • Adds alternate ‘directory structure’ • Think ‘/proc’ only niftier • Get-PSdrive • Snapin • Group of PowerShell functionality

  15. DEMO: Getting Around

  16. Conditions and Flow Control • Variables • $foo = “bar” #implicitly typed as System.String • $ary = 4,2,5,2 #typed as object[] • [xml]$xdoc = “<a><b>b1</b><b>b2</b></a>” • Some Operators • -eq • -lt / -gt • -le / -ge • -like / -notlike • -match / -imatch • Control • If • switch • help about_comparison_operators

  17. The Pipeline • Everything is a System.Object • Unless its something more useful • dir | where-object {$_.Length –gt 5} | select-object –last 2 | sort-object -prop Extension –desc • $anArray | sort

  18. Most Useful Commands • Foreach-object • dir | foreach-object { $_.Name } • Alias: dir | % { $_.Name } • Where-object • dir | where-object {$_.Length –gt 10} • Alias: dir | ? {$_.Length –gt 10} • Select-object • dir | select-object –first 5 • Alias: none • Honorable Mentions: Sort-Object, Group-Object

  19. DEMO: Exploring the Pipeline

  20. LINQish PowerShell Syntax LINQ PowerShell int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; varlowNums = from n in numbers where n < 5 select n; Console.WriteLine("Numbers < 5:"); foreach (var x in lowNums) { Console.WriteLine(x); } $numbers = 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 Write-host “Numbers < 5:” $numbers | ?{$_ -lt 5}

  21. Isn’t this for SharePoint Developers? • SharePoint has a rich .NET Object Model • PowerShell interacts natively with .NET • SharePoint’s internal values are hidden • Lots of functionality not accessible via the UI • Validation of custom code • Debugging is Difficult • Especially on a remote machine • Code/Compile/Deploy/Test/Repeat Cycle

  22. Loading the Object Model • [System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SharePoint”) • $site = new-object Microsoft.SharePoint.SPSite(http://thesite/site) • $web = $site.OpenWeb() • $web.Title

  23. Some Useful Commands • Display all the Lists • $web.Lists • Display Properties Sorted by Name • $item.Properties | sort –prop Name • Set an item’s properties • $item.Properties[“SomeKey”] = “value” • $item.Properties.Update()

  24. DEMO: Working with Item Properties

  25. Exploring SharePoint Development • Not Everything is Intuitive • Object Model Gives Hints • Compile->Deploy->Test Loop is Long • Makes failed attempts expensive • Using PowerShell Lowers (some) Pain • No Compile/Deploy Loop • Get Immediate Feedback

  26. DEMO: SPListItems and Folders

  27. Extending Types • Command Line version of Mashups • Add Properties and Methods to ANY type • Simplifies potentially tedious commands • On The Fly Magic • Add-Member • The (SemiPermanent) Magic • Ps1xml • Update-type –pre/postpend my.ps1xml

  28. DEMO: Extending Types

  29. Taking it Further • PowerShell Community Extensions (PSX) • http://www.codeplex.com/PowerShellCX • SharePoint Provider (v2 only) • http://www.codeplex.com/PSSharePoint • PowerTab • http://thepowershellguy.com/blogs/posh/pages/powertab.aspx

  30. Your Feedback is Important Please fill out a session evaluation form and either put them in the basket near the exit or drop them off at the conference registration desk. Thank you!

  31. Questions?

  32. Thanks! Neil Iversen Inetium http://justaddcode.com

More Related