54 lines
2.2 KiB
PowerShell
54 lines
2.2 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Installs SQL Server 2017 Express LocalDB on a machine.
|
|
.DESCRIPTION
|
|
This script installs Microsoft SQL Server 2017 Express LocalDB on a machine.
|
|
.LINK
|
|
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-2016-express-localdb?view=sql-server-2017
|
|
https://docs.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server-from-the-command-prompt?view=sql-server-2017
|
|
#>
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
$ProgressPreference = 'SilentlyContinue' # Workaround PowerShell/PowerShell#2138
|
|
Set-StrictMode -Version 1
|
|
|
|
$intermedateDir = "$PSScriptRoot\obj"
|
|
mkdir $intermedateDir -ErrorAction Ignore | Out-Null
|
|
|
|
Write-Host "Installing SQL Server 2017 Express LocalDB" -f Magenta
|
|
|
|
# Download SqlLocalDB.msi.
|
|
$installerFilename = "SqlLocalDB.msi"
|
|
$installerPath = "$intermedateDir\$installerFilename"
|
|
Write-Host ""
|
|
Write-Host "Downloading '$installerFilename' to '$installerPath'."
|
|
Invoke-WebRequest -OutFile $installerPath -Uri `
|
|
"https://download.microsoft.com/download/E/F/2/EF23C21D-7860-4F05-88CE-39AA114B014B/$installerFilename"
|
|
|
|
# Install LocalDB.
|
|
$arguments = '/package', "`"$installerPath`"", '/NoRestart', '/Passive', `
|
|
'IACCEPTSQLLOCALDBLICENSETERMS=YES', 'HIDEPROGRESSBAR=YES'
|
|
Write-Host ""
|
|
Write-Host "Running 'msiexec $arguments'."
|
|
$process = Start-Process msiexec.exe -ArgumentList $arguments -NoNewWindow -PassThru -Verbose -Wait
|
|
if ($process.ExitCode -ne 0)
|
|
{
|
|
exit $process.ExitCode
|
|
}
|
|
|
|
# Download SQLServer2017-KB4484710-x64.exe.
|
|
$installerFilename = "SQLServer2017-KB4484710-x64.exe"
|
|
$installerPath = "$intermedateDir\$installerFilename"
|
|
Write-Host ""
|
|
Write-Host "Downloading SQL Server 2017 Cumulative Update 14 to '$installerPath'."
|
|
Invoke-WebRequest -OutFile $installerPath -Uri `
|
|
"https://download.microsoft.com/download/C/4/F/C4F908C9-98ED-4E5F-88D5-7D6A5004AEBD/$installerFilename"
|
|
|
|
# Update LocalDB.
|
|
$arguments = '/Action=Patch', '/AllInstances', '/IAcceptSQLServerLicenseTerms', `
|
|
'/Quiet', '/SuppressPrivacyStatementNotice'
|
|
Write-Host ""
|
|
Write-Host "Running '`"$installerPath`" $arguments'."
|
|
$process = Start-Process "$installerPath" -ArgumentList $arguments -PassThru -Verbose -Wait
|
|
exit $process.ExitCode
|