Download presentation
Presentation is loading. Please wait.
Published byRosalind Morgan Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.