Automating PowerShell with SharePoint
-
Upload
talbott-crowell -
Category
Documents
-
view
2.702 -
download
3
description
Transcript of Automating PowerShell with SharePoint
PowerShell SharePoint
Talbott Crowell
SPSBoston, September 25, 2010http://www.thirdm.com
Unix-like shell
Object oriented
.NET
Command line
Scripting language
What is PowerShell?
Automated build and deploy
Rapid prototyping
Exploring “What If” scenarios
Developer onboarding
Administration automation
Why PowerShell for 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?
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
PowerShell Basics $a = DIR
$a | gm
Dates
Demo - Basics
Cmd, notepad
PowerShell Command
Windows PowerShell Integrated Scripting Environment (ISE) Import-Module ServerManager;
Add-WindowsFeature PowerShell-ISE
PowerGUI Download from powergui.org
Tools
# for comment
Verb-Noun convention for commandlets
Write-Host “Hello World”
Set-ExecutionPolicy Unrestricted
.\scriptname to execute
More Basics
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
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
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?
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
[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
Series of scripts to build your site
Cleanup script to destroy site
Edit script, run cleanup, run script, view site Repeat
Strategy
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
function Get-Theme([Microsoft.SharePoint.SPWeb]$SPWeb, [string]$themeName)
Strong typed parameters
Returns Microsoft.SharePoint.Utilities.ThmxTheme
Defining functions
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
How to: Build a SharePoint 2010 PowerShell Cmdlet http://silverlight.sys-con.com/node/1370916
Other References
Thank you. Questions?PowerShell SharePoint
Talbott Crowell
ThirdM.com
http://talbottc.spaces.live.com
Twitter: @talbott