spcsea 2013 - setting up sharepoint 2013: tips and tricks and powershell scripts

43
Partner Platinum Sponsor Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts Michael Noel USA 1

Upload: michael-noel

Post on 25-May-2015

3.535 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Partner

Platinum Sponsor

Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Michael Noel

USA

1

Page 2: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

2Michael Noel Author of SAMS Publishing titles “SharePoint 2013 Unleashed,” “Exchange Server

2013 Unleashed”, “Windows Server 2012 Unleashed,” and over fifteen other titles with worldwide circulation of over a quarter million in 20 languages worldwide

Partner at Convergent Computing (www.cco.com / +1(510)444-5700) – San Francisco, U.S.A. based Infrastructure/Security specialists for SharePoint, AD, Exchange, Security

Page 3: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

3

What we will cover

What’s new in Infrastructure in SharePoint 2013?

SharePoint Architecture FundamentalsSharePoint Virtualization OptionsVirtualized Template Server CreationInstallation of the SharePoint 2013 BinariesPowerShell Scripting Installation Options

Page 4: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

What’s New in Infrastructure for SharePoint 2013

Outlining Changes and new Requirements for Installation

4

Page 5: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Windows Server 2008 R2 SP1 or Windows Server 2012 (Preferred)

SQL Server 2008 R2 w/SP1 or SQL Server 2012 (Preferred)

Type Memory Processor

Dev/Stage/Test server 8GB RAM 4 CPU

‘All-in-one’ DB/Web/SA 24GB RAM 4 CPU

Web/SA Server 12GB RAM 4 CPU

DB Server (medium environments) 16GB RAM 8 CPU

DB Server (small environments) 8GB RAM 4 CPU

What’s new in Infrastructure for SharePoint 2013

Software/Hardware Requirements

Page 6: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Office Web Apps is no longer a service applicationWeb Analytics is no longer service application, it’s part of

searchNew service applications available and improvements on

existing ones App Management Service – Used to manage the new SharePoint

app store from the Office Marketplace or the Application Catalog SharePoint Translation Services – provides for language

translation of Word, XLIFF, and PPT files to HTML Work Management Service – manages tasks across SharePoint,

MS Exchange and Project. Access Services App (2013) – Replaces 2010 version of Access

Services

What’s new in Infrastructure for SharePoint 2013

Changes in Service Applications and New Service Applications

Page 7: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

App Management Service – Used to manage the new SharePoint app store from the Office Marketplace or the Application Catalog

SharePoint Translation Services – provides for language translation of Word, XLIFF, and PPT files to HTML

Work Management Service – manages tasks across SharePoint, MS Exchange and Project.

Access Services App (2013) – Replaces 2010 version of Access Services

What’s new in Infrastructure for SharePoint 2013

New Service Applications

Page 8: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

A new Windows service – the Distributed Cache Service – is installed on each server in the farm when SharePoint is installed

It is managed via the Services on Server page in central admin as the Distributed Cache service

The config DB keeps track of

which machines in the farm

are running the cache service

What’s new in Infrastructure for SharePoint 2013

Distributed Cache Service

Page 9: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

The purpose of the Request Management feature is to give SharePoint knowledge of and more control over incoming requests

Having knowledge over the nature of incoming requests – for example, the user agent, requested URL, or source IP – allows SharePoint to customize the response to each request

RM is applied per web app, just like throttling is done in SharePoint 2010

What’s new in Infrastructure for SharePoint 2013

Request Management (RM)

Page 10: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Option 1: Simple one-way Sync (a la SharePoint 2007)Option 2: Two-way, possible write-back to AD options

using small FIM service on UPA server (a la 2010)Option 3: Full Forefront Identity Manager (FIM)

Synchronization, allows for complex scenarios – Larger clients will appreciate this

What’s new in Infrastructure for SharePoint 2013

User Profile Sync – Three Options for Deployment

Page 11: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

SharePoint 2013 continues to offer support for both claims and classic authentication modes

However claims authentication is THE default authentication option nowClassic authentication mode is still there, but can only

be managed in PowerShell – it’s gone from the UI Support for classic mode is deprecated and will go away

in a future releaseThere also a new process to migrate accounts from Windows classic to Windows claims – the Convert-SPWebApplication cmdlet

What’s new in Infrastructure for SharePoint 2013

Claims-based Authentication - Default

Page 12: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Stores new versions of documents as ‘shredded BLOBs that are deltas of the changes

Promises to reduce storage size significantly

What’s new in Infrastructure for SharePoint 2013

Shredded Storage

Page 13: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Documents are stored in SharePointEmails are stored in ExchangeTeam Folders can receive emails and have their own email address

Easy access to both from Outlook and SharePoint

Unified compliance policy applies to both

What’s new in Infrastructure for SharePoint 2013

Team Mailboxes – Exchange 2013 Integration

Page 14: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

New Search architecture (FAST based) with one unified search

Personalized search results based on search history

Rich contextual previews

What’s new in Infrastructure for SharePoint 2013

Search – FAST Search now included

Page 15: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Classic and Contemporary views for mobile browsers

Automatic Mobile Browser Redirection

Target different designs based on user agent string

Office Mobile Web Apps Excel PowerPoint Word

Push notifications

What’s new in Infrastructure for SharePoint 2013

Mobile Device Improvements

Page 16: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Architecting the FarmDeciding the Ideal Farm Architecture Prior to Installation

16

Page 17: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Web

Service Apps

Data

Architecting the Farm

Three Layers of SharePoint Infrastructure

Page 18: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

‘All-in-One’ (Avoid)

DB and SP Roles Separate

Architecting the Farm

Small Farm Models

Page 19: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

2 SharePoint Servers running Web and Service Apps

2 Database Servers (AlwaysOn FCI or AlwaysOn Availability Groups)

1 or 2 Index Partitions with equivalent query components

Smallest farm size that is fully highly available

Architecting the Farm

Smallest Highly Available Farm

Page 20: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

2 Dedicated Web Servers (NLB)

2 Service Application Servers

2 Database Servers (Clustered or Mirrored)

1 or 2 Index Partitions with equivalent query components

Architecting the Farm

Best Practice ‘Six Server Farm’

Page 21: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

• Separate farm for Service Applications

• One or more farms dedicated to content

• Service Apps are consumed cross-farm

• Isolates ‘cranky’ service apps like User Profile Sync and allows for patching in isolation

Architecting the Farm

Ideal – Separate Service App Farm + Content Farm(s)

Page 22: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

• Multiple Dedicated Web Servers

• Multiple Dedicated Service App Servers

• Multiple Dedicated Query Servers

• Multiple Dedicated Crawl Servers, with multiple Crawl DBs to increase parallelization of the crawl process

• Multiple distributed Index partitions (max of 10 million items per index partition)

• Two query components for each Index partition, spread among servers

Architecting the Farm

Large SharePoint Farms

Page 23: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Best Practice Information Governance Architecture - Distribute

Architecting the Farm

Page 24: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

SharePoint VirtualizationNew Options for SharePoint Installation

24

Page 25: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Allows organizations that wouldn’t normally be able to have a test environment to run one

Allows for separation of the database role onto a dedicated server Can be more easily scaled out in the future

Sample 1: Single Server Environment

SP Server Virtualization

Page 26: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

High-Availability across Hosts

All components Virtualized

Uses only two Windows Virt Licenses

Sample 2: Two Server Highly Available Farm

SP Server Virtualization

Page 27: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Highest transaction servers are physical

Multiple farm support, with DBs for all farms on the SQL cluster

Sample 3: Mix of Physical and Virtual Servers

SP Server Virtualization

Page 28: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Scaling to Large Virtual Environments

SP Server Virtualization

Page 29: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Processor (Host Only) <60% Utilization = Good 60%-90% = Caution >90% = Trouble

Available Memory 50% and above = Good 10%-50% = OK <10% = Trouble

Disk – Avg. Disk sec/Read or Avg. Disk sec/Write Up to 15ms = fine 15ms-25ms = Caution >25ms = Trouble

• Network Bandwidth – Bytes Total/sec– <40% Utilization = Good– 41%-64% = Caution– >65% = Trouble

• Network Latency - Output Queue Length– 0 = Good– 1-2= OK– >2 = Trouble

Virtualization of SharePoint ServersVirtualization Performance Monitoring

Page 30: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Quick SP2013 Farm Provisioning with VMM 2012

1. Create new Virtual Guest (Windows Server 2008 R2)

2. Install SP2013 Binaries. Stop before running Config Wizard

3. Turn Virtual Guest into Template, modify template to allow it to be added into domain

4. Add PowerShell script to run on first login, allowing SP to be added into farm or to create new farm

Page 31: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Installation of SharePointAutomating and Customizing the Installation Experience

31

Page 32: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

32

Installation of the SP Binaries

Always, ALWAYS choose Complete for any production builds!

Stand-alone installs SQL Server Express

Page 33: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

33

Installation of the SP Binaries

Choose the Index location during the install process…it will save you the trouble of moving it later

Be sure to allocate sufficient space!

Page 34: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

34

Installation of the SP Binaries

Uncheck the box to run the Configuration Wizard

Preferable to use PowerShell instead of the Wizard!

Page 35: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

PowerShell InstallationNearly the entire process can be scripted and

automatedAllows for the creation of standardized database

names (no GUIDs)Exception is User Profile Synch Service, which

could be automated, but can be very tricky (requires special process) so is generally recommended to be done manually

Sample install scripts written for our ‘SharePoint Unleashed’ book are available on Toni Frankola’s blog at http://tinyurl.com/SPFarm-Config

35

Page 36: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Sample Script (http://tinyurl.com/SPFarm-Config) $configType = read-host "Do you wish to create a new farm? (Y/N)" if ($ConfigType -eq "N") { $DatabaseServer = read-host "Preparing to join existing farm. Please specify the name of your SQL Server"; $ConfigDB = read-host "Next, specify the name of your Farm Configuration Database"; $Passphrase = read-host "Finally, please enter your Farm passphrase" -assecurestring } else { $DatabaseServer = read-host "Preparing to create a new Farm. Please specify the name of your SQL

Server (ex SERVER or SERVER\INSTANCE[,PORT])"; $FarmName = read-host "Please specify a name for your Farm (ex. SP2013Dev)"; $ConfigDB = $FarmName+"_ConfigDB"; $AdminContentDB = $FarmName+"_CentralAdminContent"; Write-Host "Please enter the credentials for your Farm Account (ex. COMPANYABC\SP_Farm)"; $FarmAcct = Get-Credential; $Passphrase = read-host "Enter a secure Farm passphrase (must meet password complexity requirements)"

-assecurestring; $Port = read-host "Enter a port number for the Central Administration Web App"; $Authentication = read-host "Finally, specify your authentication provider (NTLM/Kerberos)"; } if ($ConfigType -eq "N") { if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) { Add-PSSnapin Microsoft.SharePoint.PowerShell; }

Connect-SPConfigurationDatabase -DatabaseName $ConfigDB -DatabaseServer $DatabaseServer -Passphrase $Passphrase

} else { if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) { Add-PSSnapin Microsoft.SharePoint.PowerShell; } Write-Host "Your SharePoint Farm is being configured..." New-SPConfigurationDatabase -DatabaseName $ConfigDB -DatabaseServer $DatabaseServer -

AdministrationContentDatabaseName $AdminContentDB -Passphrase $Passphrase -FarmCredentials $FarmAcct

} Initialize-SPResourceSecurity Install-SPService Install-SPFeature -AllExistingFeatures New-SPCentralAdministration -Port $Port -WindowsAuthProvider $Authentication Install-SPHelpCollection -All Install-SPApplicationContent Write-Host "Your SharePoint 2013 Farm has been created!" if ($ConfigType -eq "Y") { $WebAppCreation = read-host "Would you like to provision a Web Application using the default Team Site

Template? (Y/N)"; if ($WebAppCreation -eq "Y") { $HostHeaderQ = read-host "Would you like to specify a host header? (Y/N)"; if ($HostHeaderQ -eq "Y") { $HostHeader = read-host "Please specify a host header for your Web Application (ex.

intranet.contoso.com)"; $URL = "http://"+$HostHeader; } else { $URL = "http://"+$env:COMPUTERNAME; } Write-Host "Creating your Web Application..."; $ap = New-SPAuthenticationProvider New-SPWebApplication -Name "SharePoint 2013 Team Site" -Port 80 -Url $URL -

ApplicationPool "Content_AppPool" -ApplicationPoolAccount (Get-SPManagedAccount $FarmAcct.UserName) -DatabaseServer $DatabaseServer -DatabaseName ($FarmName + "_TeamSite_ContentDB_01") -AuthenticationProvider $ap;

New-SPSite $URL -OwnerAlias $FarmAcct.UserName -Language 1033 -Template "STS#0" -Name "Team Site";

Write-Host "Configuration completed."; } else { Write-Host "Configuration completed."; } }

$serviceAppsConfig = read-host "Do you wish to configure Service Applications? (Y/N)"

if($serviceAppsConfig -eq "Y") { PowerShell -File "Configure-ServiceApps.ps1" $FarmName } else { Write-Host "Press any key to continue..." $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") }

36

Page 37: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Sample Script – Service Apps (http://tinyurl.com/SPFarm-Config) cls Remove-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) { Add-PSSnapin Microsoft.SharePoint.PowerShell; }

function Start-SPService($ServiceInstanceTypeName) { $ServiceInstance = (Get-SPServiceInstance | Where {$_.TypeName -eq $ServiceInstanceTypeName}) if($ServiceInstance -ne $null -and $ServiceInstance.Status -ne "Online" -and $ServiceInstance.Status -ne

"Provisioning") { $ServiceInstance | Start-SPServiceInstance } $i = 0; while(-not ($ServiceInstance.Status -eq "Online") -and $i -lt 10) { Write-Host -ForegroundColor Yellow "Waiting for the $ServiceInstanceTypeName service

to provision..."; sleep 100; $ServiceInstance = (Get-SPServiceInstance | Where {$_.TypeName -eq

$ServiceInstanceTypeName}) $i += 1; if($i -eq 10) { $continue = Read-Host "Service $ServiceInstanceTypeName has not yet

been provisioned. Would you like to wait? (Y/N)" if($continue -eq "Y") { $i = 0; } } } }

Function Configure-SPSearch { PARAM($AppPool, $FarmName, $SearchServiceAccount)

$searchServiceInstance = Get-SPEnterpriseSearchServiceInstance -local Start-SPEnterpriseSearchServiceInstance -Identity $searchServiceInstance $dbName = $FarmName + "_SearchServiceApplication" $searchApplication = New-SPEnterpriseSearchServiceApplication -Name "$FarmName Search Service

Application" -ApplicationPool $AppPool -DatabaseName $dbName $searchApplicationProxy = New-SPEnterpriseSearchServiceApplicationProxy -name "$FarmName Search

Service Application Proxy" -SearchApplication $searchApplication Set-SPEnterpriseSearchAdministrationComponent -SearchApplication $searchApplication -

SearchServiceInstance $searchServiceInstance $crawlTopology = New-SPEnterpriseSearchCrawlTopology -SearchApplication $searchApplication $crawlDatabase = Get-SPEnterpriseSearchCrawlDatabase -SearchApplication $searchApplication New-SPEnterpriseSearchCrawlComponent -CrawlTopology $crawlTopology -CrawlDatabase

$crawlDatabase -SearchServiceInstance $searchServiceInstance while($crawlTopology.State -ne "Active") { $crawlTopology | Set-SPEnterpriseSearchCrawlTopology -Active -ErrorAction

SilentlyContinue if ($crawlTopology.State -ne "Active") { Start-Sleep -Seconds 10 } } $queryTopology = New-SPenterpriseSEarchQueryTopology -SearchApplication $searchApplication -

partitions 1 $searchIndexPartition = Get-SPEnterpriseSearchIndexPartition -QueryTopology $queryTopology New-SPEnterpriseSearchQueryComponent -indexpartition $searchIndexPartition -QueryTopology

$queryTopology -SearchServiceInstance $searchServiceInstance $propertyDB = Get-SPEnterpriseSearchPropertyDatabase -SearchApplication $searchApplication Set-SPEnterpriseSearchIndexPartition $searchIndexPartition -PropertyDatabase $propertyDB while ($queryTopology.State -ne "Active") { $queryTopology | Set-SPEnterpriseSearchQueryTopology -Active -ErrorAction

SilentlyContinue if ($queryTopology.State -ne "Active") { Start-Sleep -Seconds 10 } } }

function Start-SPTimer { $spTimerService = Get-Service "SPTimerV4" if($spTimerService.Status -ne "Running") { Write-Host -ForegroundColor Yellow "SharePoint 2013 Timer Service is not running.

Atempting to start the timer." Start-Service "SPTimerV4" $spTimerService = Get-Service "SPTimerV4" while($spTimerService.Status -ne "Running") { Start-Sleep -Seconds 10 Start-Service "SPTimerV4" $spTimerService = Get-Service "SPTimerV4" } Write-Host -ForegroundColor Green "SharePoint 2013 Timer Service is running." } else { Write-Host -ForegroundColor Green "SharePoint 2013 Timer Service is running." } }

Function Get-SPServiceApplicationPoolByName($SPApplicationPoolName, $ManagedAccount) {

$appPool = Get-SPServiceApplicationPool | Where {$_.Name -eq $SPApplicationPoolName} if($appPool -eq $null) { $appPool = New-SPServiceApplicationPool -Name $SPApplicationPoolName -Account

$ManagedAccount } Return $appPool }

Function Get-SPManagedAccountByName($AccountName) { $managedAccount = Get-SPManagedAccount | Where {$_.Username -eq $AccountName}

if($managedAccount -eq $null) { Write-Host "Please enter the credentials for your Managed Account ($AccountName)"; $managedAccountCredential = Get-Credential; $managedAccount = New-SPManagedAccount $managedAccountCredential } Return $managedAccount }

Function Get-SPServiceApplicationByType($TypeName) { $serviceApplications = Get-SPServiceApplication | Where {$_.TypeName -eq $TypeName} if($serviceApplications -ne $null) { $true; } else { $false; } }

Function New-SPUsageApplicationAndProxy($FarmName) { Write-Host -ForegroundColor Yellow "Configuring Usage and Health Data Collection Service..." $dbName = $FarmName + "_UsageandHealthDataCollectionService" New-SPUsageApplication "$FarmName Usage and Health Data Collection Service" -DatabaseName

$dbName $usageApplicationProxy = Get-SPServiceApplicationProxy | where{$_.Name -eq "$FarmName Usage and

Health Data Collection Service"}

if($usageApplicationProxy.Status -eq "Disabled") { $usageApplicationProxy.Status = "Online"; $usageApplicationProxy.Update(); } Write-Host -ForegroundColor Green "Installing Usage and Health Data Collection Service installed." }

Function New-SPStateServiceApplicationGroup($FarmName){ $dbName = $FarmName + "_StateService" Write-Host -ForegroundColor Yellow "Installing State Service Application..." New-SPStateServiceDatabase $dbName | New-SPStateServiceApplication -Name

"$FarmName State Service Application" | New-SPStateServiceApplicationProxy -Name "$FarmName State Service Application Proxy" -DefaultProxyGroup

sleep 10; Write-Host -ForegroundColor Green "State Service Application installed..." }

#arguments from Config-Farm script $FarmName=$args[0];

# Starting SP Timer Service Start-SPTimer

if($appPoolName -eq $null -or $appPoolName -eq "") { $appPoolName = Read-Host "Please specify a name for the ServiceApp Application Pool (eg.

ServiceAppPool)" }

if($managedAccountName -eq $null -or $managedAccountName -eq "") { $managedAccountName = Read-Host "Please enter service account (eg. CompanyABC\sp_serviceapps)" }

if($FarmName -eq $null -or $FarmName -eq "") { $FarmName = Read-Host "Please enter your farm name"; }

$managedAccount = Get-SPManagedAccountByName $managedAccountName $appPool = Get-SPServiceApplicationPoolByName $appPoolName $managedAccount

$decision = read-host "Would you like to install State Service Application? (Y/N)" if ($decision -eq "Y") { New-SPStateServiceApplicationGroup $FarmName }

$decision = read-host "Would you like to install Access Services 2010? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Access Service 2010 Service Installation" -Status "Stating Access Database

Service 2010 Service" Start-SPService("Access Database Service 2010") Write-Progress -Activity "Access Service 2010 Service Installation" -Status "Creating Access Service 2010

Application" New-SPAccessServiceApplication -Name "$FarmName Access Service 2010" -ApplicationPool $appPool -

Default Write-Progress -Activity "Access Service 2010 Service Installation" -Status "Completed" -Completed $true }

$decision = read-host "Would you like to install Business Data Connectivity Service? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Business Data Connectivity Service Installation" -Status "Starting Business Data

Connectivity Service" Start-SPService("Business Data Connectivity Service") $dbName = $FarmName + "_BusinessDataConnectivityService" Write-Progress -Activity "Business Data Connectivity Service Installation" -Status "Creating Business Data

Connectivity Service Application" New-SPBusinessDataCatalogServiceApplication -Name "$FarmName Business Data Connectivity Service"

-ApplicationPool $appPool -databaseName $dbName Write-Progress -Activity "Business Data Connectivity Service Installation" -Status "Completed" -Completed

$true }

$decision = read-host "Would you like to configure Usage and Health Data Collection Service? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Usage and Health Data Collection Service Configuration" -Status "Configuring

Usage and Health Data Collection Service" New-SPUsageApplicationAndProxy $FarmName Write-Progress -Activity "Usage and Health Data Collection Service Configuration" -Status "Completed" -

Completed $true }

$decision = read-host "Would you like to install Excel Services? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Excel Services Installation" -Status "Starting Excel Calculation Services" Start-SPService("Excel Calculation Services") Write-Progress -Activity "Excel Services Installation" -Status "Creating Excel Service Application" New-SPExcelServiceApplication -Name "$FarmName Excel Service" -ApplicationPool $appPool -Default Write-Host -ForegroundColor Green "Excel Services installed." Write-Progress -Activity "Excel Services Installation" -Status "Completed" -Completed $true }

$decision = read-host "Would you like to install Managed Metadata Service? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Managed Metadata Service Application Installation" -Status "Starting Managed

Metadata Web Service" Start-SPService("Managed Metadata Web Service") $dbName = $FarmName + "_ManagedMetadataService"

Write-Progress -Activity "Managed Metadata Service Application Installation" -Status "Creating Managed Metadata Service Application"

$MetaDataServiceApp = New-SPMetadataServiceApplication -Name "$FarmName Managed Metadata Service" -ApplicationPool $appPool -DatabaseName $dbName

$MetaDataServiceAppProxy = New-SPMetadataServiceApplicationProxy -Name "$FarmName Managed Metadata Service Proxy" -ServiceApplication $MetaDataServiceApp -DefaultProxyGroup

Write-Progress -Activity "Managed Metadata Service Application Installation" -Status "Completed" -

Completed $true }

$decision = read-host "Would you like to install Secure Store Service? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Secure Store Service Application Installation" -Status "Starting Secure Store

Service" Start-SPService("Secure Store Service") $dbName = $FarmName + "_SecureStore" Write-Progress -Activity "Secure Store Service Application Installation" -Status "Creating Secure Store

Service Application" $secureStoreServiceApp = New-SPSecureStoreServiceApplication -Name "$FarmName Secure Store

Service Application" -ApplicationPool $appPool -DatabaseName $dbName -AuditingEnabled:$true New-SPSecureStoreServiceApplicationProxy -ServiceApplication $secureStoreServiceApp -Name

"$FarmName Secure Store Service Application Proxy" -DefaultProxyGroup Write-Progress -Activity "Secure Store Service Application Installation" -Status "Completed" -Completed

$true }

$decision = read-host "Would you like to install Visio Graphics Service? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Visio Graphics Service Application Installation" -Status "Starting Visio Graphics

Service" Start-SPService("Visio Graphics Service") Write-Progress -Activity "Visio Graphics Service Application Installation" -Status "Creating Visio Graphics

Service Application" New-SPVisioServiceApplication -Name "$FarmName Visio Graphics Service" -ApplicationPool $appPool Write-Progress -Activity "Visio Graphics Service Application Installation" -Status "Creating Visio Graphics

Service Application Proxy" New-SPVisioServiceApplicationProxy -Name "$FarmName Visio Graphics Service Proxy" -

ServiceApplication "$FarmName Visio Graphics Service" Write-Progress -Activity "Visio Graphics Service Application Installation" -Status "Completed" -Completed

$true }

$decision = read-host "Would you like to install Word Automation Services? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Word Automation Services Application Installation" -Status "Starting Word

Automation Services" Start-SPService("Word Automation Services") $dbName = $FarmName + "_WordAutomationService" Write-Progress -Activity "Word Automation Services Application Installation" -Status "Creating Word

Automation Service Application" New-SPWordConversionServiceApplication -Name "$FarmName Word Automation Service" -

ApplicationPool $appPool -DatabaseName $dbName -Default

Write-Progress -Activity "Word Automation Services Application Installation" -Status "Completed" -Completed $true

}

$decision = read-host "Would you like to install Machine Translation Service Application? (Y/N)" if ($decision -eq "Y") { $dbName = $FarmName + "_MachineTranslationService"

Write-Progress -Activity "Machine Translation Service Application Installation" -Status "Starting Machine Translation Service"

Start-SPService("Machine Translation Service") Write-Progress -Activity "Machine Translation Service Application Installation" -Status "Creating Machine

Translation Service Application" New-SPTranslationServiceApplication -Name "$FarmName Machine Translation Service" -ApplicationPool

$appPool -DatabaseName $dbName Write-Progress -Activity "Machine Translation Service Application Installation" -Status "Completed" -

Completed $true }

$decision = read-host "Would you like to install PerformancePoint Service Application? (Y/N)" if ($decision -eq "Y") { $dbName = $FarmName + "_PerformancePoint"

Write-Progress -Activity "PerformancePoint Service Application Installation" -Status "Starting PerformancePoint Service"

Start-SPService("PerformancePoint Service") Write-Progress -Activity "PerformancePoint Service Application Installation" -Status "Creating

PerformancePoint Service Service Application" New-SPPerformancePointServiceApplication -Name "$FarmName PerformancePoint Service" -

ApplicationPool $appPool -DatabaseName $dbName Write-Progress -Activity "PerformancePoint Service Application Installation" -Status "Completed" -

Completed $true }

$decision = read-host "Would you like to install Work Management Service Application? (Y/N)" if ($decision -eq "Y") { $dbName = $FarmName + "_WorkManagement"

Write-Progress -Activity "Work Management Service Application Installation" -Status "Starting Work Management Service"

Start-SPService("Work Management Service") Write-Progress -Activity "Work Management Service Application Installation" -Status "Creating Work

Management Service Service Application" New-SPWorkManagementServiceApplication –Name "$FarmName Work Management Service" –

ApplicationPool $appPool Write-Progress -Activity "Work Management Service Application Installation" -Status "Completed" -

Completed $true }

$decision = read-host "Would you like to install Search Service? (Y/N)" if ($decision -eq "Y") { Write-Progress -Activity "Search Service Application Installation" -Status "Starting Search Service

Application"

$hostname = (Get-ChildItem env:computername).Value Start-SPEnterpriseSearchServiceInstance $hostname Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $hostname $dbName = $FarmName + "_SearchService"

Write-Progress -Activity "Search Service Application Installation" -Status "Creating Search Service Application"

$SearchServiceApp = New-SPEnterpriseSearchServiceApplication -Name "$FarmName Search Service Application" -ApplicationPool $appPool -DatabaseName $dbName

$SearchServiceAppProxy = New-SPEnterpriseSearchServiceApplicationProxy -Name "$FarmName Search Service Proxy" -ServiceApplication $SearchServiceApp -DefaultProxyGroup

Write-Progress -Activity "Search Service Application Installation" -Status "Configuring Topology" $clone = $searchServiceApp.ActiveTopology.Clone() $searchServiceInstance = Get-SPEnterpriseSearchServiceInstance New-SPEnterpriseSearchAdminComponent –SearchTopology $clone -SearchServiceInstance

$searchServiceInstance New-SPEnterpriseSearchContentProcessingComponent –SearchTopology $clone -SearchServiceInstance

$searchServiceInstance New-SPEnterpriseSearchAnalyticsProcessingComponent –SearchTopology $clone -

SearchServiceInstance $searchServiceInstance New-SPEnterpriseSearchCrawlComponent –SearchTopology $clone -SearchServiceInstance

$searchServiceInstance New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance

$searchServiceInstance New-SPEnterpriseSearchQueryProcessingComponent –SearchTopology $clone -SearchServiceInstance

$searchServiceInstance $clone.Activate() Write-Progress -Activity "Search Service Application Installation" -Status "Completed" -Completed $true }

iisreset

Write-Host -ForegroundColor Green "Installation completed."

Page 38: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Post-InstallationAdd additional farm members (via templates if

possible)Configure Request Management for large farms

(configurable via PowerShell)Put a hardware load balancer in front of

SharePoint web front-ends (F5, A10, Kemp, etc.)Configure Backup, iFilters, any third-party web

partsCreate a SQL Maintenance Plan!Configure Security!

38

Page 39: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

• Infrastructure Security and Best practices Physical Security Best Practice Service Account Setup Kerberos Authentication

• Data Security Role Based Access Control (RBAC) Transparent Data Encryption (TDE) of SQL Databases

• Transport Security Secure Sockets Layer (SSL) from Server to Client IPSec from Server to Server

• Edge Security Inbound Internet Security (Forefront UAG/TMG)

• Rights Management

Five Layers of SharePoint Security

Post Installation: Configure Security

Page 40: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

• Implement SQL Maintenance Plans!• Include DBCC (Check Consistency) and either

Reorganize Indexes or Rebuild Indexes, but not both!

Post InstallationCreate SQL Maintenance Plans

• Add backups into the maintenance plan if they don’t exist already

• Be sure to truncate transaction logs with a T-SQL Script (after full backups have run…)

Page 41: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

• Document all key settings in IIS, SharePoint, after installation• Consider monitoring for changes after installation for Config

Mgmt.• Fantastic tool for this is the SPDocKit - can be found at

http://tinyurl.com/spdockit

Post-Installation – Document SharePoint

Page 42: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

42Thank you to our sponsors

Page 43: SPCSEA 2013 - Setting up SharePoint 2013: Tips and Tricks and PowerShell Scripts

Thanks for attending!Questions?

Michael Noel

Twitter: @MichaelTNoel

www.cco.com

Slides: slideshare.net/michaeltnoel

Travel blog: sharingtheglobe.com

Session Eval: http://tinyurl.com/spcsea