PowerShell for SharePoint Admins.pdf

26
Introduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint Nerds Rackspace

Transcript of PowerShell for SharePoint Admins.pdf

Introduction to Windows PowerShell for SharePoint AdministratorsShane Young and Todd KlindtSharePoint NerdsRackspaceWho is this Todd guy? SharePoint MVP since 2006 Speaker, writer, consultant, juggler of kittens Personal Blogwww.toddklindt.com/blog Company web sitesharepoint.rackspace.com [email protected] Twitter me! @toddklindtAgenda What is Windows PowerShell Windows PowerShell basics Windows PowerShell scripts for administratorsWhat is Windows PowerShell? Command-line interface and scripting language used for SharePoint Server administration Compliments CMD Extends STSADM Uses XML & Objects Built on the .NET FrameworkWhy do we care? Complete command-line system that is far more powerful than any previous Windows-based command-line prompt environment. Provides: More Control More Efficiency More Productivity More coolnessWhat about STSADM? STSADM still available to support backwards compatibility. Whatever STSADM can do, PowerShell can do better! Ability to run against SQL Snapshots, instead of production. More granular control for backup / restore.Windows PowerShell Basics cmdlet pronounced "command-let single function that can be used separately or combined with other cmdlets to perform complex tasks and automate administrationWindows PowerShell Basics cmdlets = verbs (actions) & nouns (objects) Combine the two to build specific commands Examples Get-SPSite Get = Verb SPSite = NounGetting the list of SharePoint cmdlets Get a list of all commands: Get-Command noun sp* Get help for a specific command: Get-Help Get-Help -exampleDEMOPowerShell BasicsPowerShell Scripts Build scripts to easily execute through common commands & tasks! Can be developed and scheduled using Windows Task Scheduler. Register-ScheduledJobPowerShell Scripts Examples: Activate a feature across multiple site collections Provisioning of Managed Accounts Creating of New Sites Backup all Site Collections in FarmScripting Syntax Sample Script: $password = Read-Host "What is the password for all accounts?" -assecurestring ; Get-Content usernames.txt | ForEach-Object {New-SPManagedAccount -password $password -username litwareinc\$_; Set-SPManagedAccount -identity $_ -autogenerate -confirm:$False}Syntax Description$ Denotes a variable.; Denotes completion of cmdlet, continue to next one.| Sends the output of the preceding cmdlet to the next cmdlet.ForEach-Object { } For each object, execute all the commands within the { }.DEMOPowerShell ScriptsGeneral PowerShell tips Its just a shell, spruce it up some Color Size Run as Admin Enable quick edit Use the included ISE Use a third party solutionRemoting Must be enabled on each server Nothing much to do on the client Two ways in Enter-PSSession Invoke-Command Use Enable-PSRemoting to enable Get-Help about_remoting Watch out for security settings Increase MaxMemoryPerShellMB PowerShell Web AccessAvoiding the Farm Config Wizard The Farm Config Wizard does some very bad things Wise SharePoint admins avoid it Use PowerShell to replicate its functionality Steps Managed accounts Web applications MySite host Service application pool State Service Usage Service The rest Everyday tasks Add-SPShellAdmin Move-SPSite Enable Developer Dashboard Troubleshooting Master pages Get database sizesAdd-SPShellAdmin Necessary for unprivileged accounts, since youre not logging in as the Farm account, right? Must specify databases to give access to Gives permissions to an account WSS_Admin_WPG on SharePoint servers SharePoint_Shell_Access role on database To run it account must have: Security_Admin role SQL instance db_owner role on database Local admin on SharePoint serverMove-SPSite Used to move Site Collections between content databases Everything mergecontentdbs can do, this can do better Mostly done on the SQL side Databases must be attached to the same web application, and on the same SQL instance Works great to get rid of Content databases with GUIDsDeveloper Dashboard Can be enabled with STSADM, but thats just embarrassing More flexibility with PowerShell$dash = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.DeveloperDashboardSettings; $dash.DisplayLevel = 'On'; $dash.TraceEnabled = $true; $dash.Update() Get-SPLogEvent -StartTime (Get-Date).addminutes(-10) Directory e:\logs | Where-Object {$_.correlation -eq "dc07834b-9982-4eaf-aacf-d62a6b398f87"}Troubleshooting Use New-SPLogFile immediately before and right after recreating a problem Use Merge-SPLogFiles to collect trace logs from all servers in your farm Use Get-SPLogEvent to get events Can filter by a number of properties, like Correlation ID Can point at alternate directory$web = Get-SPWeb http://sharepoint $web.CustomMasterUrl = "/_catalogs/masterpage/nightandday.master" $web.MasterUrl = "/_catalogs/masterpage/nightandday.master" $web.Update() Master Pages Can be used to set the master pageGet-SPDatabase | Sort-Object disksizerequired -desc | Format-Table Name, @{Label ="Size in MB"; Expression = {$_.disksizerequired/1mb}}Get-SPDatabase | ForEach-Object {$db=0} {$db+=$_.disksizerequired; $_.name + " - " + $_.disksizerequired/1mb} {Write-Host "`nTotal Storage (in MB) =" ("{0:n0}" -f ($db/1mb))}Database Information Use Get-SPDatabase to get list of databases and their propertiesLinks Todd doing this without Shane http://www.toddklindt.com/sizzle Zach Rosenfields blog http://sharepoint.microsoft.com/Blogs/zach Gary Lapointes blog http://blog.falchionconsulting.com/ Document your farm with PowerShell http://technet.microsoft.com/en-us/library/ff645391.aspx PS Scripts http://get-spscripts.com/Things we referenced Determine database sizes in PowerShell http://www.toddklindt.com/SP2010DatabaseSize Remoting requirements for SharePoint 2010 http://sharepoint.microsoft.com/blogs/zach/Lists/Posts/Post.aspx?ID=45 Developer Dashboard http://www.toddklindt.com/devdashboard Master Pages http://www.toddklindt.com/SetSP2010MasterPage Use Move-SPSite http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=233 SharePoint 2013 PowerShell Guide http://technet.microsoft.com/en-us/library/ff678226.aspx