PowerShell For SharePoint Developers - PowerPoint PPT Presentation

About This Presentation
Title:

PowerShell For SharePoint Developers

Description:

Better visibility into the Object Model. Find all the instances ... VBScript replacement. Admin's Best Friend. Developer's Best Friend. cmd.exe. unix cmdline. ... – PowerPoint PPT presentation

Number of Views:135
Avg rating:3.0/5.0
Slides: 33
Provided by: erikr155
Category:

less

Transcript and Presenter's Notes

Title: PowerShell For SharePoint Developers


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
  • Its a
  • Shell
  • Cool .bat file
  • VBScript replacement
  • Admins Best Friend
  • Developers 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
  • xmlxdoc ltagtltbgtb1lt/bgtltbgtb2lt/bgtlt/agt
  • 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
var lowNums from n in numbers
where n lt 5 select n
Console.WriteLine("Numbers lt 5") foreach
(var x in lowNums) Console.WriteLine(x)

numbers 5, 4, 1, 3, 9, 8, 6, 7, 2,
0 Write-host Numbers lt 5 numbers ?_ -lt 5
21
Isnt this for SharePoint Developers?
  • SharePoint has a rich .NET Object Model
  • PowerShell interacts natively with .NET
  • SharePoints 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.AssemblyLoadWithPartialName(
    Microsoft.SharePoint)
  • site new-object Microsoft.SharePoint.SPSite(htt
    p//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 items properties
  • item.PropertiesSomeKey value
  • item.Properties.Update()

24
DEMO Working with Item Properties
25
Exploring SharePoint Development
  • Not Everything is Intuitive
  • Object Model Gives Hints
  • Compile-gtDeploy-gtTest 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/power
    tab.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
Write a Comment
User Comments (0)
About PowerShow.com