SharePoint 2010 Administration using PowerShell

advertisement
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.
Download