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

Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

May 28, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

Introduction to Windows PowerShell

for SharePoint Administrators

Shane Young and Todd Klindt

SharePoint Nerds

Rackspace

Page 2: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

[email protected]

• Twitter me! @toddklindt

Page 3: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

Agenda

• What is Windows PowerShell

• Windows PowerShell basics

• Windows PowerShell scripts for administrators

Page 4: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 5: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 6: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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.

Page 7: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 8: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

Windows PowerShell Basics

• cmdlets = verbs (actions) & nouns (objects)

– Combine the two to build specific commands

– Examples

• Get-SPSite

• Get = Verb

• SPSite = Noun

Page 9: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 10: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

DEMO

PowerShell Basics

Page 11: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

PowerShell Scripts

• Build scripts to easily execute through common

commands & tasks!

• Can be developed and scheduled using Windows

Task Scheduler.

• Register-ScheduledJob

Page 12: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

PowerShell Scripts

• Examples:

– Activate a feature across multiple site collections

– Provisioning of Managed Accounts

– Creating of New Sites

– Backup all Site Collections in Farm

Page 13: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 14: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

DEMO

PowerShell Scripts

Page 15: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 16: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 17: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 18: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

Everyday tasks

• Add-SPShellAdmin

• Move-SPSite

• Enable Developer Dashboard

• Troubleshooting

• Master pages

• Get database sizes

Page 19: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 20: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 21: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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()

Page 22: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 23: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

$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

Page 24: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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

Page 25: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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/

Page 26: Introduction to Windows PowerShell for SharePoint ... for SharePoint Admins.pdfIntroduction to Windows PowerShell for SharePoint Administrators Shane Young and Todd Klindt SharePoint

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