Automating PowerShell with SharePoint

19
PowerShell SharePoint Talbott Crowell SPSBoston, September 25, 2010 http://www.thirdm.com

description

 

Transcript of Automating PowerShell with SharePoint

Page 1: Automating PowerShell with SharePoint

PowerShell SharePoint

Talbott Crowell

SPSBoston, September 25, 2010http://www.thirdm.com

Page 2: Automating PowerShell with SharePoint

Unix-like shell

Object oriented

.NET

Command line

Scripting language

What is PowerShell?

Page 3: Automating PowerShell with SharePoint

Automated build and deploy

Rapid prototyping

Exploring “What If” scenarios

Developer onboarding

Administration automation

Why PowerShell for SharePoint?

Page 4: Automating PowerShell with SharePoint

When you want to make your team more agile Automation, automation, automation

When developing, your daily build is like the projects heartbeat PowerShell can be the pacemaker

Testing Use the PowerShell scripts to stand up an

environment for running tests

When use PowerShell?

Page 5: Automating PowerShell with SharePoint

What do you know about a command line? DIR

How about $a = DIR

What is $a? .NET Object

use gm or get-member to query properites Array

$a[0]

PowerShell Basics

Page 6: Automating PowerShell with SharePoint

PowerShell Basics $a = DIR

$a | gm

Dates

Demo - Basics

Page 7: Automating PowerShell with SharePoint

Cmd, notepad

PowerShell Command

Windows PowerShell Integrated Scripting Environment (ISE) Import-Module ServerManager;

Add-WindowsFeature PowerShell-ISE

PowerGUI Download from powergui.org

Tools

Page 8: Automating PowerShell with SharePoint

# for comment

Verb-Noun convention for commandlets

Write-Host “Hello World”

Set-ExecutionPolicy Unrestricted

.\scriptname to execute

More Basics

Page 9: Automating PowerShell with SharePoint

Comes with PowerShell Commandlets Get-SPSite

New-SPSite

New-SPWeb

If you are running from standard PowerShell Add-PSSnapin microsoft.sharepoint.powershell

-ErrorAction SilentlyContinue

SharePoint 2010

Page 10: Automating PowerShell with SharePoint

Get-SPSite Parameter: url

New-SPSite Parameters: url, name, ownerAlias, template

New-SPWeb Parameters: url, name, description, template…

Other params: -AddToTopNav or -UseParentTopNav -AddToQuickLaunch

Create Site Collections and Sites

Page 11: Automating PowerShell with SharePoint

Your friend STSADM is still there

You can call STSADM or any command line tool from PowerShell

You can write your own command line tools with .NET

Better yet, you can write your own PowerShell Commandlets! Inherit from Cmdlet or PSCmdlet

Gary Lapointe has WSS and MOSS Cmdlets! http://stsadm.blogspot.com/2009/02/downloads.html

What about MOSS 2007 or WSS?

Page 12: Automating PowerShell with SharePoint

When creating non-persistent tasks (i.e. get info) use: SPCmdlet

When objects persist between commands, use: SPRemoveCmdletBase

SPNewCmdletBase

SPSetCmdletBase

SPGetCmdletBase

For more info, see Gary Lapointe’s blog post: http://

stsadm.blogspot.com/2009/10/creating-custom-sharepoint-2010-cmdlets.html

Creating SharePoint 2010 Cmdlets

Page 13: Automating PowerShell with SharePoint

[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”) Load the assembly

$SPSite = New-Object Microsoft.SharePoint.SPSite($url) Reference to the site collection using SharePoint

object model

Don’t forget to $SPSite.Dispose()

Creating SharePoint Objects

Page 14: Automating PowerShell with SharePoint

Series of scripts to build your site

Cleanup script to destroy site

Edit script, run cleanup, run script, view site Repeat

Strategy

Page 15: Automating PowerShell with SharePoint

Build2010.ps1 Calls other scripts

Build2010_site_structure.ps1 Sets up the basic site structure and content types

Build2010_upload_file.ps1 Uploads sample files to the site

Build2010_set_logo.ps1 Adds site logo

Build2010_add_users.ps1 Adds users to local machine and/or SharePoint groups

Demo – series of scripts

Page 16: Automating PowerShell with SharePoint

function Get-Theme([Microsoft.SharePoint.SPWeb]$SPWeb, [string]$themeName)

Strong typed parameters

Returns Microsoft.SharePoint.Utilities.ThmxTheme

Defining functions

Page 17: Automating PowerShell with SharePoint

Upload File Takes in 1 or more files

Has 3 blocks Begin

Process

End

Process is executed for each file

gci 'C:\uploadfiles\Samples\Legal' | .\build2010_upload_file.ps1 -Location "shared/legal" -DocLib "Documents" -ContentType "Document" -MetaDataField "Dept" -MetaDataValue "Legal"

Iteration Style Scripts

Page 18: Automating PowerShell with SharePoint

How to: Build a SharePoint 2010 PowerShell Cmdlet http://silverlight.sys-con.com/node/1370916

Other References

Page 19: Automating PowerShell with SharePoint

Thank you. Questions?PowerShell SharePoint

Talbott Crowell

ThirdM.com

http://talbottc.spaces.live.com

Twitter: @talbott