Anda di halaman 1dari 26

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 Blog
www.toddklindt.com/blog
Company web site
sharepoint.rackspace.com
E-mail
todd.klindt@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

DEMO
PowerShell Basics

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 { }.

DEMO
PowerShell Scripts

General 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 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 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 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 thats just


embarrassing
More flexibility with PowerShell

$dash =
[Microsoft.SharePoint.Administration.SPWebService]::Conte
ntService.DeveloperDashboardSettings;
$dash.DisplayLevel = 'On';
$dash.TraceEnabled = $true;
$dash.Update()

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

Get-SPLogEvent -StartTime (Get-Date).addminutes(-10) Directory


e:\logs | Where-Object {$_.correlation -eq "dc07834b-9982-4eafaacf-d62a6b398f87"}

Master Pages
Can be used to set the master page

$web = Get-SPWeb http://sharepoint


$web.CustomMasterUrl =
"/_catalogs/masterpage/nightandday.master"
$web.MasterUrl = "/_catalogs/masterpage/nightandday.master"
$web.Update()

Database Information
Use Get-SPDatabase to get list of databases and
their properties

Get-SPDatabase | Sort-Object disksizerequired -desc | FormatTable 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))}

Links
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

Anda mungkin juga menyukai