SharePoint 2010 Administration using PowerShell Brian Caauwe Senior Consultant – SharePoint – MCTS March 20, 2010 Session Agenda • • • • Introduction PowerShell Basics PowerShell & SharePoint 2010 Demo • Q&A Who am I? • Brian Caauwe • Consultant & Speaker – Email: bcaauwe@inetium.com – Blog: http://blogs.inetium.com/blogs/bcaauwe • MCTS - SharePoint v3 Minnesota SharePoint User Group • 2nd Wednesday of the Month – 9:00 – 11:30 AM • • • • SharePoint resources and links Meeting Schedule Past User Group Presentations This Presentation www.sharepointmn.com • Next Meeting – 4/14 – Business Process and Digital Forms 2007 / 2010 POWERSHELL BASICS Getting Started • More than just a command prompt • Not Exclusive to SharePoint – Exchange 2007 – SQL 2008 – More… • Get PowerShell – Windows Server 2003 (KB926139) – Windows Server 2008 (Activate Feature) • Tab is your friend (auto-complete) More PowerShell Information • Use .NET objects – System.String – System.Int32 – Etc. • Access Registry – cd HKLM:\System – cd HKCU:\Software • Store Variables – $myArray = “value1”,”value2”,”value3” • Supports Complex operations – Loops (For, While) – If / Else – Switch • Supports Functions – Function Get-Information([string]$arg) Even More PowerShell Information • Syntax differences – Operators • • • • • • • • • -lt is Less than (<) -le is Less than or Equal To (<=) -eq is Equivalent (==) -gt is Greater than (>) -ge is Greater than or Equal to (>=) -ne is Not Equal (!=) -or is Logical Or (||) -and is Logical And (&&) ? is Where (Where-Object) – Enums and Static Methods • [System.Reflection.Assembly]::LoadWithPartialName(“ Microsoft.SharePoint”) PowerShell Scripts • File Extension (.ps1) • Running Scripts – Call using .\script.ps1 • ExecutionPolicy minimum RemoteSigned PowerShell Output • Output to Console (Write-Host) • Output to File (Out-File) PowerShell Help • Get-Help • Get-Member POWERSHELL & SP 2010 SharePoint 2010 • Uses PowerShell v2.0 – Allows Remote Access • Microsoft.SharePoint.PowerShell namespace – Get-Command -pssnapin “Microsoft.SharePoint.PowerShell” | more – Beta2 = ~535 cmdlets • Download Help files (.chm) from my Blog • SharePoint 2010 Management Shell – *Run as Administrator SharePoint Shell Administrator • SharePoint_Shell_Access SQL Server Role – Get-SPShellAdmin – Add-SPShellAdmin • Need to be a local admin to run this cmdlet • Adds user to WSS_Admin_WPG – Remove-SPShellAdmin SharePoint 2010 Cmdlet Basics • All Cmdlets are Object Model Based – SPSite – SPWeb – Etc… • Start-SPAssignment / Stop-SPAssignment – Garbage Collector for Disposable objects – Can be used on variables or globally • Use the -WhatIF parameter to see what “would” happen Helpful Cmdlets • New-SPConfigurationDatabase (replacing psconfig) • Add-SPSolution / Deploy-SPSolution • New-SPLogFile • Get-SPLogEvent -StartTime (GetDate).AddHours(-2) -EndTime (GetDate).AddMinutes(-10) Advanced Cmdlets • Using the Pipe (|) – Joins statements together • Get-SPWebApplication http://portal.company.com | GetSPSite -Limit All | Get-SPWeb -Limit All • Get-SPSite http://portal.company.com | Set-SPSite SecondaryOwnerAlias DOMAIN\username More Advanced Cmdlets • Querying Objects – Get-SPWeb -Filter {$_.Template -eq “Blog"} – Get-SPLogEvent -StartTime (GetDate).AddHours(-1)| ?{$_.Correlation -eq $guid} | Select Timestamp, Category, Message – Get-SPSite http://portal.company.com/dept/* | foreach{New-SPWeb -Url ($_.Url + "/blog") Template Blog#0} – Get-SPWebApplication http://portal.company.com | Get-SPSite -Limit All | Get-SPWeb -Limit All | ?{$_.WebTemplate –eq “Blog”} | Select Url, Title, WebTemplateId Remote Scripting • Run Commands on SharePoint servers – Enable-PSRemoting –force – Enable-WSManCredSSP –role Server –force – Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1000 • Run Commands on local machine – Enable-PSRemoting -force – Enable-WSManCredSSP –role Client –DelegateComputer “*.domain.com or COMPUTERNAME” –force • Shared SPModule (\\servername\spmodule) – Zach Rosenfields’s Blog http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=54 • Store Credentials in a variable – $cred = Get-Credential • Load Modules – $env:PSModulePath = \\servername\spmodule; + $env:PSModulePath – Import-Module SPModule.misc – Import-Module SPModule.setup DEMO Q&A References • TechNet – Windows PowerShell for SharePoint Server 2010 – http://technet.microsoft.com/enus/library/ee662539(office.14).aspx • TechNet – Getting Started: Windows PowerShell for SharePoint 2010 Administrators – http://technet.microsoft.com/enus/sharepoint/ee518673.aspx • Zach Rosenfield’s Blog – http://sharepoint.microsoft.com/blogs/zach/Lists/Cate gories/Category.aspx?Name=PowerShell • Brian Caauwe’s Blog – http://blogs.inetium.com/blogs/bcaauwe A key element to your success.