[KEERO-96] Implemented standalone SQL Server 2012 installer. Moved SQL Server command line parsers to a separate module.

This commit is contained in:
Dmitry Korotkov 2013-03-03 00:03:40 -08:00
parent c2c7aa7be8
commit af964d0811
6 changed files with 224 additions and 187 deletions

View File

@ -0,0 +1,3 @@
@echo off
cd %~dp0
powershell.exe -ExecutionPolicy Unrestricted .\InstallSQLServerStandalone.ps1 %*

View File

@ -0,0 +1,10 @@
param(
[parameter(Mandatory = $true)]
[string]$SetupRoot
)
Import-Module '.\SQLServerInstaller.psm1'
$ErrorActionPreference = 'Stop'
New-SQLServer $SetupRoot

View File

@ -1,3 +0,0 @@
@echo off
cd %~dp0
powershell.exe -ExecutionPolicy Unrestricted .\SQLServerInstaller.ps1 %*

View File

@ -1,26 +0,0 @@
param(
[parameter(Mandatory = $true)]
[string]$Mode,
[parameter(Mandatory = $true)]
[string]$SetupRoot
)
$ErrorActionPreference = 'Stop'
Import-Module '.\SQLServerInstaller.psm1'
$SupportedModes = @('STANDALONE')
if (-not ($SupportedModes -contains $Mode)) {
throw "Installation mode '$Mode' is not supported. Supported modes are: $($SupportedModes -join ', ')"
}
$SetupDir = Get-Item $SetupRoot
$SetupExe = $SetupDir.GetFiles("setup.exe")[0]
$parser = New-OptionParserInstall
if ($Mode -eq 'STANDALONE') {
$parser.ExecuteBinary($SetupExe.FullName, @{"QS" = $null})
}

View File

@ -1,169 +1,38 @@
Import-Module '.\OptionParser.psm1'
Import-Module '.\SQLServerOptionParsers.psm1'
#RVER /SQLSVCACCOUNT="<DomainName\UserName>" /SQLSVCPASSWORD="<StrongPassword>"
# /SQLSYSADMINACCOUNTS="<DomainName\UserName>" /AGTSVCACCOUNT="NT AUTHORITY\Network Service" /IACCEPTSQLSERVERLICENSETERMS
function New-SQLServer {
param(
[parameter(Mandatory = $true)]
[string]$SetupRoot
)
function New-OptionParserInstall {
<#
.SYNOPSIS
Creates an option parser for MS SQL Server 2012 setup "INSTALL" action.
$SetupDir = Get-Item $SetupRoot
$SetupExe = $SetupDir.GetFiles("setup.exe")[0]
.DESCRIPTION
Use this cmdlet to create an option parser for MS SQL Server 2012 setup "INSTALL" action.
All documented option are supported. See the following link for details:
http://msdn.microsoft.com/en-us/library/ms144259.aspx
#>
$OptionParserInstall = New-OptionParser
$parser = New-OptionParserInstall
$ExitCode = $parser.ExecuteBinary($SetupExe.FullName, @{"QS" = $null; "FEATURES" = @("SQLEngine", "Conn", "SSMS", "ADV_SSMS")})
$OptionParserInstall.AddOption((New-Option "ACTION" -String -Constraints "INSTALL"), $true, "INSTALL")
$OptionParserInstall.AddOption((New-Option "IACCEPTSQLSERVERLICENSETERMS" -Switch), $true)
$OptionParserInstall.AddOption((New-Option "ENU" -Switch))
$OptionParserInstall.AddOption((New-Option "UpdateEnabled" -Switch))
$OptionParserInstall.AddOption((New-Option "UpdateSource" -String))
$OptionParserInstall.AddOption((New-Option "CONFIGURATIONFILE" -String))
$OptionParserInstall.AddOption((New-Option "ERRORREPORTING" -Boolean))
$OptionParserInstall.AddOption((New-Option "FEATURES" -List -Constraints ("SQL","SQLEngine","Replication","FullText","DQ","AS","RS","DQC","IS","MDS","Tools","BC","BOL","BIDS","Conn","SSMS","ADV_SSMS","DREPLAY_CTLR","DREPLAY_CLT","SNAC_SDK","SDK","LocalDB")))
$OptionParserInstall.AddOption((New-Option "ROLE" -String -Constraints ("SPI_AS_ExistingFarm", "SPI_AS_NewFarm", "AllFeatures_WithDefaults")))
$OptionParserInstall.AddOption((New-Option "INDICATEPROGRESS" -Switch))
$OptionParserInstall.AddOption((New-Option "INSTALLSHAREDDIR" -String))
$OptionParserInstall.AddOption((New-Option "INSTALLSHAREDWOWDIR" -String))
$OptionParserInstall.AddOption((New-Option "INSTANCEDIR" -String))
$OptionParserInstall.AddOption((New-Option "INSTANCEID" -String))
$OptionParserInstall.AddOption((New-Option "INSTANCENAME" -String), $true, "MSSQLSERVER")
$OptionParserInstall.AddOption((New-Option "PID" -String))
$OptionParserInstall.AddOption((New-Option "Q" -Switch))
$OptionParserInstall.AddOption((New-Option "QS" -Switch))
$OptionParserInstall.AddOption((New-Option "UIMODE" -String -Constraints ("Normal", "AutoAdvance")))
$OptionParserInstall.AddOption((New-Option "SQMREPORTING" -Boolean))
$OptionParserInstall.AddOption((New-Option "HIDECONSOLE" -Switch))
$OptionParserInstall.AddOption((New-Option "AGTSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParserInstall.AddOption((New-Option "AGTSVCPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "AGTSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParserInstall.AddOption((New-Option "ASBACKUPDIR" -String))
$OptionParserInstall.AddOption((New-Option "ASCOLLATION" -String))
$OptionParserInstall.AddOption((New-Option "ASCONFIGDIR" -String))
$OptionParserInstall.AddOption((New-Option "ASDATADIR" -String))
$OptionParserInstall.AddOption((New-Option "ASLOGDIR" -String))
$OptionParserInstall.AddOption((New-Option "ASSERVERMODE" -String -Constraints ("MULTIDIMENSIONAL", "POWERPIVOT", "TABULAR")))
$OptionParserInstall.AddOption((New-Option "ASSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParserInstall.AddOption((New-Option "ASSVCPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "ASSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParserInstall.AddOption((New-Option "ASSYSADMINACCOUNTS" -String), $true, "$ENV:USERDOMAIN\$ENV:USERNAME")
$OptionParserInstall.AddOption((New-Option "ASTEMPDIR" -String))
$OptionParserInstall.AddOption((New-Option "ASPROVIDERMSOLAP" -Boolean))
$OptionParserInstall.AddOption((New-Option "FARMACCOUNT" -String))
$OptionParserInstall.AddOption((New-Option "FARMPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "PASSPHRASE" -String))
$OptionParserInstall.AddOption((New-Option "FARMADMINIPORT" -String))
$OptionParserInstall.AddOption((New-Option "BROWSERSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParserInstall.AddOption((New-Option "ENABLERANU" -Switch))
$OptionParserInstall.AddOption((New-Option "INSTALLSQLDATADIR" -String))
$OptionParserInstall.AddOption((New-Option "SAPWD" -String))
$OptionParserInstall.AddOption((New-Option "SECURITYMODE" -String -Constrainrs ("SQL")))
$OptionParserInstall.AddOption((New-Option "SQLBACKUPDIR" -String))
$OptionParserInstall.AddOption((New-Option "SQLCOLLATION" -String))
$OptionParserInstall.AddOption((New-Option "ADDCURRENTUSERASSQLADMIN" -Switch))
$OptionParserInstall.AddOption((New-Option "SQLSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParserInstall.AddOption((New-Option "SQLSVCPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "SQLSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParserInstall.AddOption((New-Option "SQLSYSADMINACCOUNTS" -String), $true, "$ENV:USERDOMAIN\$ENV:USERNAME")
$OptionParserInstall.AddOption((New-Option "SQLTEMPDBDIR" -String))
$OptionParserInstall.AddOption((New-Option "SQLTEMPDBLOGDIR" -String))
$OptionParserInstall.AddOption((New-Option "SQLUSERDBDIR" -String))
$OptionParserInstall.AddOption((New-Option "SQLUSERDBLOGDIR" -String))
$OptionParserInstall.AddOption((New-Option "FILESTREAMLEVEL" -String -Constraints ("0", "1", "2", "3")))
$OptionParserInstall.AddOption((New-Option "FILESTREAMSHARENAME" -String))
$OptionParserInstall.AddOption((New-Option "FTSVCACCOUNT" -String))
$OptionParserInstall.AddOption((New-Option "FTSVCPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "ISSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParserInstall.AddOption((New-Option "ISSVCPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "ISSVCStartupType" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParserInstall.AddOption((New-Option "NPENABLED" -Boolean))
$OptionParserInstall.AddOption((New-Option "TCPENABLED" -Boolean))
$OptionParserInstall.AddOption((New-Option "RSINSTALLMODE" -String -Constraints ("SharePointFilesOnlyMode", "DefaultNativeMode", "FilesOnlyMode")))
$OptionParserInstall.AddOption((New-Option "RSSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParserInstall.AddOption((New-Option "RSSVCPASSWORD" -String))
$OptionParserInstall.AddOption((New-Option "RSSVCStartupType" -String -Constraints ("Manual", "Automatic", "Disabled")))
return $OptionParserInstall
if ($ExitCode -ne 0) {
throw "Installation executable exited with code $("{0:X8}" -f $ExitCode)"
}
}
function New-OptionParserPrepareImage {
# ToDo: Implement
throw "Not yet implemented"
}
function Remove-SQLServer {
param(
[parameter(Mandatory = $true)]
[string]$SetupRoot
)
function New-OptionParserCompleteImage {
# ToDo: Implement
throw "Not yet implemented"
}
$SetupDir = Get-Item $SetupRoot
$SetupExe = $SetupDir.GetFiles("setup.exe")[0]
function New-OptionParserUpgrade {
# ToDo: Implement
throw "Not yet implemented"
}
$parser = New-OptionParserUninstall
$ExitCode = $parser.ExecuteBinary($SetupExe.FullName, @{"Q" = $null; "FEATURES" = @("SQLEngine", "Conn", "SSMS", "ADV_SSMS")})
function New-OptionParserEditionUpgrade {
# ToDo: Implement
throw "Not yet implemented"
if ($ExitCode -ne 0) {
throw "Installation executable exited with code $("{0:X8}" -f $ExitCode)"
}
}
function New-OptionParserRepair {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserRebuilddatabase {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserUninstall {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserInstallFailoverCluster {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserPrepareFailoverCluster {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserCompleteFailoverCluster {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserUpgrade {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserAddNode {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserRemoveNode {
# ToDo: Implement
throw "Not yet implemented"
}
Export-ModuleMember -Function New-OptionParserInstall
Export-ModuleMember -Function New-OptionParserPrepareImage
Export-ModuleMember -Function New-OptionParserCompleteImage
Export-ModuleMember -Function New-OptionParserUpgrade
Export-ModuleMember -Function New-OptionParserEditionUpgrade
Export-ModuleMember -Function New-OptionParserRepair
Export-ModuleMember -Function New-OptionParserRebuilddatabase
Export-ModuleMember -Function New-OptionParserUninstall
Export-ModuleMember -Function New-OptionParserInstallFailoverCluster
Export-ModuleMember -Function New-OptionParserPrepareFailoverCluster
Export-ModuleMember -Function New-OptionParserCompleteFailoverCluster
Export-ModuleMember -Function New-OptionParserUpgrade
Export-ModuleMember -Function New-OptionParserAddNode
Export-ModuleMember -Function New-OptionParserRemoveNode
Export-ModuleMember -Function New-SQLServer
Export-ModuleMember -Function Remove-SQLServer

View File

@ -0,0 +1,184 @@
Import-Module '.\OptionParser.psm1'
function New-OptionParserInstall {
<#
.SYNOPSIS
Creates an option parser for MS SQL Server 2012 setup "INSTALL" action.
.DESCRIPTION
Use this cmdlet to create an option parser for MS SQL Server 2012 setup "INSTALL" action.
All documented option are supported. See the following link for details:
http://msdn.microsoft.com/en-us/library/ms144259.aspx
#>
$OptionParser = New-OptionParser
$OptionParser.AddOption((New-Option "ACTION" -String -Constraints "INSTALL"), $true, "INSTALL")
$OptionParser.AddOption((New-Option "IACCEPTSQLSERVERLICENSETERMS" -Switch), $true)
$OptionParser.AddOption((New-Option "ENU" -Switch))
$OptionParser.AddOption((New-Option "UpdateEnabled" -Switch))
$OptionParser.AddOption((New-Option "UpdateSource" -String))
$OptionParser.AddOption((New-Option "CONFIGURATIONFILE" -String))
$OptionParser.AddOption((New-Option "ERRORREPORTING" -Boolean))
$OptionParser.AddOption((New-Option "FEATURES" -List -Constraints ("SQL","SQLEngine","Replication","FullText","DQ","AS","RS","DQC","IS","MDS","Tools","BC","BOL","BIDS","Conn","SSMS","ADV_SSMS","DREPLAY_CTLR","DREPLAY_CLT","SNAC_SDK","SDK","LocalDB")))
$OptionParser.AddOption((New-Option "ROLE" -String -Constraints ("SPI_AS_ExistingFarm", "SPI_AS_NewFarm", "AllFeatures_WithDefaults")))
$OptionParser.AddOption((New-Option "INDICATEPROGRESS" -Switch))
$OptionParser.AddOption((New-Option "INSTALLSHAREDDIR" -String))
$OptionParser.AddOption((New-Option "INSTALLSHAREDWOWDIR" -String))
$OptionParser.AddOption((New-Option "INSTANCEDIR" -String))
$OptionParser.AddOption((New-Option "INSTANCEID" -String))
$OptionParser.AddOption((New-Option "INSTANCENAME" -String), $true, "MSSQLSERVER")
$OptionParser.AddOption((New-Option "PID" -String))
$OptionParser.AddOption((New-Option "Q" -Switch))
$OptionParser.AddOption((New-Option "QS" -Switch))
$OptionParser.AddOption((New-Option "UIMODE" -String -Constraints ("Normal", "AutoAdvance")))
$OptionParser.AddOption((New-Option "SQMREPORTING" -Boolean))
$OptionParser.AddOption((New-Option "HIDECONSOLE" -Switch))
$OptionParser.AddOption((New-Option "AGTSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParser.AddOption((New-Option "AGTSVCPASSWORD" -String))
$OptionParser.AddOption((New-Option "AGTSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParser.AddOption((New-Option "ASBACKUPDIR" -String))
$OptionParser.AddOption((New-Option "ASCOLLATION" -String))
$OptionParser.AddOption((New-Option "ASCONFIGDIR" -String))
$OptionParser.AddOption((New-Option "ASDATADIR" -String))
$OptionParser.AddOption((New-Option "ASLOGDIR" -String))
$OptionParser.AddOption((New-Option "ASSERVERMODE" -String -Constraints ("MULTIDIMENSIONAL", "POWERPIVOT", "TABULAR")))
$OptionParser.AddOption((New-Option "ASSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParser.AddOption((New-Option "ASSVCPASSWORD" -String))
$OptionParser.AddOption((New-Option "ASSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParser.AddOption((New-Option "ASSYSADMINACCOUNTS" -String), $true, "$ENV:USERDOMAIN\$ENV:USERNAME")
$OptionParser.AddOption((New-Option "ASTEMPDIR" -String))
$OptionParser.AddOption((New-Option "ASPROVIDERMSOLAP" -Boolean))
$OptionParser.AddOption((New-Option "FARMACCOUNT" -String))
$OptionParser.AddOption((New-Option "FARMPASSWORD" -String))
$OptionParser.AddOption((New-Option "PASSPHRASE" -String))
$OptionParser.AddOption((New-Option "FARMADMINIPORT" -String))
$OptionParser.AddOption((New-Option "BROWSERSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParser.AddOption((New-Option "ENABLERANU" -Switch))
$OptionParser.AddOption((New-Option "INSTALLSQLDATADIR" -String))
$OptionParser.AddOption((New-Option "SAPWD" -String))
$OptionParser.AddOption((New-Option "SECURITYMODE" -String -Constrainrs ("SQL")))
$OptionParser.AddOption((New-Option "SQLBACKUPDIR" -String))
$OptionParser.AddOption((New-Option "SQLCOLLATION" -String))
$OptionParser.AddOption((New-Option "ADDCURRENTUSERASSQLADMIN" -Switch))
$OptionParser.AddOption((New-Option "SQLSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParser.AddOption((New-Option "SQLSVCPASSWORD" -String))
$OptionParser.AddOption((New-Option "SQLSVCSTARTUPTYPE" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParser.AddOption((New-Option "SQLSYSADMINACCOUNTS" -String), $true, "$ENV:USERDOMAIN\$ENV:USERNAME")
$OptionParser.AddOption((New-Option "SQLTEMPDBDIR" -String))
$OptionParser.AddOption((New-Option "SQLTEMPDBLOGDIR" -String))
$OptionParser.AddOption((New-Option "SQLUSERDBDIR" -String))
$OptionParser.AddOption((New-Option "SQLUSERDBLOGDIR" -String))
$OptionParser.AddOption((New-Option "FILESTREAMLEVEL" -String -Constraints ("0", "1", "2", "3")))
$OptionParser.AddOption((New-Option "FILESTREAMSHARENAME" -String))
$OptionParser.AddOption((New-Option "FTSVCACCOUNT" -String))
$OptionParser.AddOption((New-Option "FTSVCPASSWORD" -String))
$OptionParser.AddOption((New-Option "ISSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParser.AddOption((New-Option "ISSVCPASSWORD" -String))
$OptionParser.AddOption((New-Option "ISSVCStartupType" -String -Constraints ("Manual", "Automatic", "Disabled")))
$OptionParser.AddOption((New-Option "NPENABLED" -Boolean))
$OptionParser.AddOption((New-Option "TCPENABLED" -Boolean))
$OptionParser.AddOption((New-Option "RSINSTALLMODE" -String -Constraints ("SharePointFilesOnlyMode", "DefaultNativeMode", "FilesOnlyMode")))
$OptionParser.AddOption((New-Option "RSSVCACCOUNT" -String), $true, "NT AUTHORITY\Network Service")
$OptionParser.AddOption((New-Option "RSSVCPASSWORD" -String))
$OptionParser.AddOption((New-Option "RSSVCStartupType" -String -Constraints ("Manual", "Automatic", "Disabled")))
return $OptionParser
}
function New-OptionParserPrepareImage {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserCompleteImage {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserUpgrade {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserEditionUpgrade {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserRepair {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserRebuilddatabase {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserUninstall {
<#
.SYNOPSIS
Creates an option parser for MS SQL Server 2012 setup "INSTALL" action.
.DESCRIPTION
Use this cmdlet to create an option parser for MS SQL Server 2012 setup "INSTALL" action.
All documented option are supported. See the following link for details:
http://msdn.microsoft.com/en-us/library/ms144259.aspx
#>
$OptionParser = New-OptionParser
$OptionParser.AddOption((New-Option "ACTION" -String -Constraints "UNINSTALL"), $true, "UNINSTALL")
$OptionParser.AddOption((New-Option "CONFIGURATIONFILE" -String))
$OptionParser.AddOption((New-Option "FEATURES" -List -Constraints ("SQL","SQLEngine","Replication","FullText","DQ","AS","RS","DQC","IS","MDS","Tools","BC","BOL","BIDS","Conn","SSMS","ADV_SSMS","DREPLAY_CTLR","DREPLAY_CLT","SNAC_SDK","SDK","LocalDB")), $true)
$OptionParser.AddOption((New-Option "INDICATEPROGRESS" -Switch))
$OptionParser.AddOption((New-Option "INSTANCENAME" -String), $true, "MSSQLSERVER")
$OptionParser.AddOption((New-Option "Q" -Switch))
$OptionParser.AddOption((New-Option "HIDECONSOLE" -Switch))
return $OptionParser
}
function New-OptionParserInstallFailoverCluster {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserPrepareFailoverCluster {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserCompleteFailoverCluster {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserUpgrade {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserAddNode {
# ToDo: Implement
throw "Not yet implemented"
}
function New-OptionParserRemoveNode {
# ToDo: Implement
throw "Not yet implemented"
}
Export-ModuleMember -Function New-OptionParserInstall
Export-ModuleMember -Function New-OptionParserPrepareImage
Export-ModuleMember -Function New-OptionParserCompleteImage
Export-ModuleMember -Function New-OptionParserUpgrade
Export-ModuleMember -Function New-OptionParserEditionUpgrade
Export-ModuleMember -Function New-OptionParserRepair
Export-ModuleMember -Function New-OptionParserRebuilddatabase
Export-ModuleMember -Function New-OptionParserUninstall
Export-ModuleMember -Function New-OptionParserInstallFailoverCluster
Export-ModuleMember -Function New-OptionParserPrepareFailoverCluster
Export-ModuleMember -Function New-OptionParserCompleteFailoverCluster
Export-ModuleMember -Function New-OptionParserUpgrade
Export-ModuleMember -Function New-OptionParserAddNode
Export-ModuleMember -Function New-OptionParserRemoveNode