Todd Klindt – Sr. SharePoint Consultant Shane Young – Owner Session Code: OFS203.
Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to...
Transcript of Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to...
Introduction to Windows PowerShell
for SharePoint Administrators
Shane Young and Todd Klindt
SharePoint Nerds
Rackspace
Who is this Todd guy?
• SharePoint MVP since 2006
• Speaker, writer, consultant, juggler of kittens
• Personal Blogwww.toddklindt.com/blog
• Company web sitesharepoint.rackspace.com
• Twitter me! @toddklindt
Agenda
• What is Windows PowerShell
• Windows PowerShell basics
• Windows PowerShell scripts for administrators
What 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 Framework
Why 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 coolness
What 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 administration
Windows PowerShell Basics
• cmdlets = verbs (actions) & nouns (objects)
– Combine the two to build specific commands
– Examples
• Get-SPSite
• Get = Verb
• SPSite = Noun
Getting the list of SharePoint cmdlets• Get a list of all commands:
– Get-Command –noun sp*
• Get help for a specific command:
– Get-Help <cmdlet>
– Get-Help <cmdlet> -example
PowerShell Scripts
• Build scripts to easily execute through common
commands & tasks!
• Can be developed and scheduled using Windows
Task Scheduler.
• Register-ScheduledJob
PowerShell Scripts
• Examples:
– Activate a feature across multiple site collections
– Provisioning of Managed Accounts
– Creating of New Sites
– Backup all Site Collections in Farm
Scripting 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 { }.
General PowerShell tips
• It’s just a shell, spruce it up some
– Color
– Size
– Run as Admin
• Enable quick edit
• Use the included ISE
• Use a third party solution
Remoting
• 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 Access
Avoiding 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 sizes
Add-SPShellAdmin
• Necessary for unprivileged accounts, since you’re 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 server
Move-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
GUIDs
Developer Dashboard
• Can be enabled with STSADM, but that’s just embarrassing
• More flexibility with PowerShell
$dash =
[Microsoft.SharePoint.Administration.SPWebService]::Conte
ntService.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 page
Get-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 properties
Links
• Todd doing this without Shane• http://www.toddklindt.com/sizzle
• Zach Rosenfield’s blog• http://sharepoint.microsoft.com/Blogs/zach
• Gary Lapointe’s 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