introduction to windows powershell for sharepoint ... for sharepoint admins.pdfintroduction to...

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

Upload: others

Post on 28-May-2020

42 views

Category:

Documents


0 download

TRANSCRIPT

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

[email protected]

• 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

• 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