0% found this document useful (0 votes)
89 views

PowerShell Install & Configure

This document discusses automating SQL Server installation and configuration using PowerShell scripts. It provides an overview of PowerShell basics like syntax, commandlets, and creating scripts. It then demonstrates how to use PowerShell scripts to install SQL Server, configure prerequisites, run the installation in unattended mode specifying a configuration file, and perform post-installation configurations. Examples are given of PowerShell scripts that can install SQL Server, configure firewall ports, install .NET features, set parameters and execute SQL queries, scripts, and other PowerShell scripts as part of the automated configuration process.

Uploaded by

RAHUL TRIPATHI
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views

PowerShell Install & Configure

This document discusses automating SQL Server installation and configuration using PowerShell scripts. It provides an overview of PowerShell basics like syntax, commandlets, and creating scripts. It then demonstrates how to use PowerShell scripts to install SQL Server, configure prerequisites, run the installation in unattended mode specifying a configuration file, and perform post-installation configurations. Examples are given of PowerShell scripts that can install SQL Server, configure firewall ports, install .NET features, set parameters and execute SQL queries, scripts, and other PowerShell scripts as part of the automated configuration process.

Uploaded by

RAHUL TRIPATHI
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Automated SQL Server installation and

configuration using PowerShell

Jamie Wick
Twitter: @Jamie_Wick
Scripts & Info: http://sql-notes.wicktech.net
Richmond SQL Server Users Group

http://rva.sqlpass.org/

Second Thursday at Markel Plaza (Glen Allen)


Everything you may (or may not) want to know about me.

Systems & Database Engineer

Masters of Science in Computer Information Systems

SysAdmin in Brisbane, Australia for ~5 years.

Assorted certifications in MS SQL Server 2005 & 2008

Photo Junkie
Agenda
• SQL Server (setup)
• PowerShell Basics
Syntax
Commandlets
• Creating PowerShell Scripts
• Scripts 101
Prepare OS & install SQL
Post install configurations
Installation
&
Configuration
of
SQL Server
(what we’re trying to do…)
SQL Server Setup

Question:
What goes into all of your SQL installs?
or
What is supposed to go into all of your SQL installs?

Answer:
Umm….
Let me go find that Checklist from a couple years ago.
SQL Setup Checklist This looks familiar…
Requirements for SQL installs

• .NET 3.5 feature


• SQL configuration file (for unattended installs)
• C:\Program Files\Microsoft SQL Server\...\ConfigurationFile.ini
• QS-Config
• Firewall exceptions

Port Use
TCP 1433 Database Engine default install
UDP 1434 SQL Server Browser Service
TCP 1434 Dedicated Admin Connection (DAC)
TCP 80 & 443 HTTP/HTTPS for SSRS
TCP 139 & 445 SQL Filestream & Filetables
TCP 2383 Analysis Services
TCP 135 MS Distributed Transaction Coordinator
SQL Setup Checklist cont. I remember some of this…
Some possible configurations
• Add admins group • Alerts
• Rename the SA account • Severity 19-25
• Register Service Provider Name (SPN) • ID 18456 - Login Error
• Operators • ID 15247 - Permission Error
• Enable the SQL Agent service • ID 9002 - Log Full
• DBMail • ID 825 - Disk I/O Error
• Contained Database Authentication • New db email notification
• Enable CLR • Low disk space
• Import Custom SQL procedures • High VLF count
• Create Linked Servers • Management Policies
• Send audits to Server Security Log • Last Backup
• Add TempDB files • Permissions
• Set Server Memory usage • Data/Log File Locations
• Set default backup path
• Backup Jobs
• Stats updates
• Index maintenance (Ola Hallengren)
• Cleanup Jobs
SQL Server Setup Times

• Manual Installation (1-6 hours)

• Scripted Installation (20 min)


Prerequisites & SQL installation (~15 min)
Post-install configuration (~5 min)
about PowerShell…

• aka PoSh
• Admin tool with Shell and Integrated Scripting Environment (ISE)

• SQL Server module for PowerShell (SQLPS)


• Invoke-SQLcmd
• SQL Management Objects (SMO)
• Supported in many products by Microsoft and other vendors:
Windows Server Cisco
Exchange VMWare
Active Directory Citrix
Sharepoint Quest (Dell Software)
SQL
Powershell Basics:
Syntax:
$xxxxxxx – variable name
[string]$xxxx - variable with string data type
“ (double quote) - string expands/replaces variables
‘ (single quote) - literal string (does not expand variables)
@” - here string (multi-line string w/ variable replacement)
# - comment out remainder of line
` (back tick) - escape character (interprets next character as literal)
{} - script block
$_ - current object (used in iterative loops, eg. For Each)
Powershell Basics: (cont.)
Commandlets: (Verb-noun naming convention)

Set-ExecutionPolicy [Restricted, AllSigned, RemoteSigned, Unrestricted]


Enable-PSRemoting –force
Import-Module [ServerManager, SQLPS]
Invoke-Command -Computername -ScriptBlock {}
Invoke-Sqlcmd -ServerInstance [-Query or -InputFile]
Invoke-Expression [$variable]
Start-Process
Write-Output
Powershell Scripts:
• .ps1 (script)
PowerShell equivalent of a .bat or .cmd file
• .psm1 (script module), .psd1 (manifest file), .ps1xml (formatting file)
(Advanced topics we aren’t covering)
• Double-click <> Execute
• Set-ExecutionPolicy to allow unsigned scripts to be run
• Parameters
Param ([string]$ServerName = “.”,
[string]$Path = “C:\”)
.\script.ps1 -ServerName “SQL01” -Path “C:\temp”
Creating PowerShell Scripts:
Design Considerations
• Execute script(s) locally or remote?
• Locally – some Windows configs cannot be changed remotely (secpol.msc)
• Remote – run script(s) from a single repository
• Single Script or Script Set?
• Single - 1 big script containing all configuration items
• Set - 1 primary script that calls sub scripts
• Script Users
• Internal use – doesn’t have to be PERFECT, document for co-workers usability
• External use – better documentation, allow for environment variablility
Script Examples

Warning:
The following 38 pages are a little dry.

Relax there are only 6…


Installing SQL Server:
Create Directories

Open Firewall Ports Back-tick for line continuation


Installing SQL Server: (cont.)
Install .NET Feature

Run SQL install as administrator, specifying config file


Configuring SQL Server:
Import SQLPS module

Set Script Parameters


Configuring SQL Server: (cont.)
Execute SQL query

Double-quote to contain single quotes

Parameter variable for server instance


Configuring SQL Server: (cont.)
Execute SQL script file Back-tick

Execute SQL script file using $ScriptPath parameter


Back-tick

Invoke-expression allows execution of dynamically created parameter


Configuring SQL Server: (cont.)
Execute PowerShell script file

Period = “Do This”

Execute PowerShell script file using $ScriptPath parameter

Passes $SQLServer value as parameter to .ps1


Demo Scripts:
Additional Resources:
SQL Server 2012 with PowerShell V3 Cookbook
by Donabel Santos

Presentation Scripts
http://sql-notes.wicktech.net/downloads/

QS Config
http://www.sqlhammer.com/blog/qs-config/

Microsoft SMO Programming Guide


http://technet.microsoft.com/en-us/library/ms162169.aspx
Questions?

You might also like