Presentation is loading. Please wait.

Presentation is loading. Please wait.

PowerShell For SharePoint Developers Neil Iversen Inetium

Similar presentations


Presentation on theme: "PowerShell For SharePoint Developers Neil Iversen Inetium"— 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 CodeCompileDeployTest Prototype (PoSH) CodeCompileDeployTest CodeCompileDeploy

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 dir cd del Mkdir help  ls  cd  rm  mkdir  man

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 = “ b1 b2 ” 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 LINQPowerShell int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var lowNums = 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]::LoadWithPartialN ame(“Microsoft.SharePoint”) $site = new-object Microsoft.SharePoint.SPSite(http://thesite/site)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 http://www.codeplex.com/PowerShellCX SharePoint Provider (v2 only) ● http://www.codeplex.com/PSSharePoint http://www.codeplex.com/PSSharePoint PowerTab ● http://thepowershellguy.com/blogs/posh/pages/powert ab.aspx http://thepowershellguy.com/blogs/posh/pages/powert ab.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


Download ppt "PowerShell For SharePoint Developers Neil Iversen Inetium"

Similar presentations


Ads by Google