powershell for sharepoint developers and administrators michael blumenthal magenic technologies...
TRANSCRIPT
PowerShell for SharePoint Developers and
Administrators
Michael BlumenthalMagenic Technologies
2
Who is Michael Blumenthal?
Associate Principal Consultantat Magenic
17 years in IT Consulting
9 years working with SharePoint (2003,2007,2010, 2013)
3x INETA Champ, CSPUG Co-Leader, SP Speaker
4
PowerShell puts the SharePoint Engine at your fingertips!
• It’s Easy to Get Started!1• Learn the PowerShell Syntax2• Real World Examples3• More Resources4• Demo!5
Getting Started with PowerShell
Windows Server 2003• Download
Windows Server 2008• Install
Server2008 R2, 2012, Win8• Run (Add ISE)
Learn to use PowerShell with SharePoint!
Symbols & Keywords
Using the SharePoint API
Creating and Running Scripts
13
Symbols, Keywords, and Syntax! Oh My!
• Variables1• Commands2• Piping3• Comparisons4• Flow Control5• Filtering6
14
Punctuation PronunciationSymbol Called Symbol Called
$ Dollar sign, money _ Underscore
# Pound, hash [ ] Square Brackets
| Pipe, vertical bar . Dot, point, period
{ } Curly braces < > Angle Brackets
“ Double Quote, tick - Dash, hyphen, minus
: Colon % Percent sign
( ) Parentheses ; Semi-colon
+ Plus = Equals, is
! Bang, not /, \ Slash, backslash
1$#|
15
Variables begin with a $
• Case Insensitive, Dynamic typing
$foo
$true, $false, $profile
$foo = “Hello, World”
1
Making Comparisons4Operator Meaning Operator Meaning
-eq Equals -le Less Than or Equal To
-ne Not Equals -like Wildcard Match
-gt Greater Than -notlike Not (Wildcard Match)
-ge Greater Than or Equal To
-match Reg. Exp. Match
-lt Less Than -notmatch Not (Reg. Exp. Match)
22
Taking Control of the Flow5
• For (Init;Test;Repeat) {Commands}• for($i=1; $i -le 10; $i++) {Write-Host $i}For• Foreach (Item in Collection) {Commands}• Foreach ($web in $site.AllWebs) {$web.Title}ForEach• If (Test) {Commands} • if ($web.Title –ne “”) {Write-Host $web.Title}
If• While (Condition){Commands}• while($val -ne 3){$val++; Write-Host $val}While
24
Where-Object6
•Where {<Test>}Syntax
• V1&2:Dir | Where {$_.Name –like
“B*”}• V3:Dir | where Name –like B*
Example
26
Highlights from the SharePoint Object Model
SPField
SPListItem
SPList
SPWeb
SPWebApplication
SPFarm
SPSite
27
Loading SharePoint 2010 Cmdlets
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
Loading SharePoint DLLs
C:\...\14\CONFIG\POWERSHELL\Registration\
SharePoint.ps1
31
Practical Uses• Bulk Create Sites1• List Item CRUD2• Create data for test cases3• Associate Workflows with a List4• Work across site collections5
• Deployment Scripting6• Identify files that won’t upload7
32
More Practical Uses• Sync Wep App Properties8• Install SharePoint9• Repeatably Manage Content10• Update Field Definitions11• Edit MP3 Metadata, Make Flashcards12
37
Real World Examples
Check the Farm VersionCheck Versioning on all document LibrariesCreate List ItemsBulk Site CreationPost Deployment Build Scripts with Audio Alerts
38
What’s your SP2010 Version?
PS C:\Users\Administrator> $(get-SPFarm).BuildVersion
Major Minor Build Revision----- ----- ----- --------14 0 6109 5002
39
Check Doc Lib Versioning Settingsfunction global:show-all-doclibs ($web){$web.Lists | where-object {($_.Hidden -ne
$true) -and ($_.BaseType -eq "DocumentLibrary")} }
function global:show-all-doclib-versettings ($web)
{show-all-doclibs ($web) |select-object -property Title, EnableVersioning, MajorVersionLimit, EnableMinorVersions,MajorWithMinorVersionsLimit,forceCheckout}
$site = get-spsite “http://server/path”
show-all-doclib-versettings $site.RootWeb
42
Bulk Site Creation
Site Definitions in V. StudioNot an answer by themselvesDefine site contentIntended for reuse
Mismatch to one time needCAML and PITAHarder: Making it data drivenChange Site Def -> Recreate Site
PowerShell & Excel & UI
Well suited for one time “blow in’s”Define the site template in the UI or use standardSave as a template
Even pub sitesPowerShell has easy loopsData driven from a CSVChanges -> Mod Scripts
43
The PowerShell Solution
Read the list of sites from CSVLoop:
Create SiteConfigure Site
Turn on FeaturesSet Master Pages, Welcome PageHide Libraries, set versioningAdjust Navigation
Add Lists, Libraries, Pages, Web parts, etcLoop again & again if needed – iterative!
44
Audio Alerts
Stick this at the end of your long running script:
$Voice = new-object -com SAPI.SpVoice $Voice.Speak(“Deployment is done!")
46
Best Practices
• Follow the Verb-Noun pattern1• Comment Your Functions2• Use Source Control3• Write your scripts as functions that
announce themselves• Make accidentals runs harmless
4
50
Use a Decompiler to see MSFT’s Code!
OR
ILSpy.netdotPeek (jetbrains)justDecompile (Telerik)Reflector(RedGate)Others…NO
LONGER
FREE
51
58
Resources Summary
MSFTReverse Engineering SharePoint PagesBruce Payette’s Book v2PowerShell Product Team Blog
CommunityCodePlex: PSBBs (mine), CodePlex:SPInstaller My Blog at BlumenthalIT.NetJeff Hicks , Gary LaPointe, Raymond Mitchell, Todd KlindtPOSHCODE.ORG, ScriptCenter
59
PowerShell puts the SharePoint API at your fingertips!
It’s Easy to Get Started!
Learn & Use the PowerShell Syntax
More Resources
In Review…
61
Contact Me!
Blog about SharePoint at http://blog.BlumenthalIT.net
Twitter: @MichaelBL
[email protected] & http://www.Magenic.com
Yammer / SPYam
62
September Community Events
CSPUG Meeting / SPFest Speaker Panel 9/25SPFest – 25-27SP Saturday 9/29 – maybe?
63
Gold
• Application Integration
• Data Platform• Digital
Marketing• Portals and
Collaboration• Software
Development• Web
Development
Silver
• Application Lifecycle Management
• Business Intelligence
• Content Management
• Mobility• Search
SDPS Program Member
Enterprise SP Development Experts
Numerous Microsoft Competencies, including:
PS: We’re hiring!