MSSQL Remote Installation using Powershell

Welcome Forums General PowerShell Q&A MSSQL Remote Installation using Powershell

This topic contains 1 reply, has 2 voices, and was last updated by

 
Keymaster
2 years, 10 months ago.

  • Author
    Posts
  • #33203

    Participant
    Points: 0
    Rank: Member

    I have 2 servers, with 2008 R2 Server installed.One is my AD and the other I want to install MSSQL Server remotely from AD server. So I am pasting the script for both machine. Error which I am getting is "UNHANDLED EXCEPTION : OUTOFMEMORYEXCEPTION"

    AD SERVER SCRIPT(Motive to run the script in SERVER 2 ) :
    ——————————————————————————————-
    $service_account_name="Autoim\Administrator"
    $service_account_password="pass@word3"
    $mssql_server_ip="192.168.14.175"
    $SecurePassWord = ConvertTo-SecureString -AsPlainText $service_account_password -Force
    $Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $service_account_name,$SecurePassWord

    write-host "Taking Session of MSSQL Machine"
    $Session = New-PSSession -ComputerName $mssql_server_ip -Credential $Cred

    Invoke-Command -Session $Session -ScriptBlock {Get-Content "\\192.168.14.175\SQL\Install_SQL_Config_File.ps1"} -Authentication CredSSP -Credential $Cred

    Remove-PSSession -session $Session

    ————————————————————————————————–
    SERVER2 SCRIPT(Contains MSSQL Configuration and Install script)
    ——————————————————————————————————

    ##########################[ INITIALIZATION ]############################

    [string]$instance="MSSQLSERVER"
    $ServiceAccountName="Autoim\Administrator"
    $ServiceAccountPassword="pass@word3"
    $saPassword="pass@word3"
    $sourceDir="C:\SQL\"
    $instDrive="C"
    $userDbDrive="D"
    $userLogDrive="D"
    $tempDbDrive="E"
    $tempLogDrive="E"
    $port=1433
    $backup_directory="G"
    $collation="Latin1_General_CI_AS"

    #######[ MSSQL Feature ]####

    $SQLEngine="Yes"
    $Replication="Yes"
    $Fulltext="Yes"
    $BIDS="Yes"
    $IS="Yes"
    $SSMS="Yes"
    $CONN="Yes"
    $BC="Yes"
    $ADV_SSMS="Yes"
    $SNAC_SDK="Yes"
    $AS="Yes"
    $RS="Yes"

    if($SQLEngine -eq "yes") { $SQLEngine="SQLENGINE" }else{ $SQLEngine=$null }
    if($Replication -eq "yes") { $Replication="Replication" }else{ $Replication=$null }
    if($Fulltext -eq "yes") { $Fulltext="FULLTEXT" }else{ $Fulltext=$null }
    if($BIDS -eq "yes") { $BIDS="BIDS" }else{ $BIDS=$null }
    if($IS -eq "yes") { $IS="IS" }else{ $IS=$null }
    if($SSMS -eq "yes") { $SSMS="SSMS" }else{ $SSMS=$null }
    if($CONN -eq "yes") { $CONN="CONN" }else{ $CONN=$null }
    if($BC -eq "yes") { $BC="BC" }else{ $BC=$null }
    if($ADV_SSMS -eq "yes") { $ADV_SSMS ="ADV_SSMS " }else{ $ADV_SSMS=$null }
    if($SNAC_SDK -eq "yes") { $SNAC_SDK="SNAC_SDK" }else{ $SNAC_SDK=$null }
    if($AS -eq "yes") { $AS="AS" }else{ $AS=$null }
    if($RS -eq "yes") { $RS="RS" }else{ $RS=$null }

    $A="FEATURES=$SQLEngine,$Replication,$Fulltext,$BIDS,$IS,$SSMS"

    if($a.Contains(",,")) { $A=$a.Replace(",,",",")}

    #FEATURES=SQLENGINE,REPLICATION,FULLTEXT,BIDS,CONN,BC,SSMS,ADV_SSMS,SNAC_SDK,AS,RS

    ################[ INSTALLING PREREQUISITE ]######################

    function installPrereqs ()
    {
    Import-Module ServerManager
    Add-WindowsFeature Application-Server,AS-NET-Framework,NET-Framework,NET-Framework-Core,WAS,WAS-Process-Model,WAS-NET-Environment,WAS-Config-APIs
    }

    ##################[ CONFIGURATION FILE ]#############################

    function prepareConfigFile ([String]$instance, $instDrive, $userDbDrive, $userLogDrive, $tempDbDrive, $tempLogDrive, $collation , $backup_directory ) {
    $config = "[SQLSERVER2008]
    ACTION=""Install""
    $A
    INSTANCENAME=""$instance""
    INSTANCEID=""$instance""
    INSTALLSHAREDDIR=""C:\Program Files\Microsoft SQL Server""
    INSTALLSHAREDWOWDIR=""C:\Program Files (x86)\Microsoft SQL Server""
    INSTANCEDIR=""C:\Program Files\Microsoft SQL Server""
    INSTALLSQLDATADIR="""+$instDrive+":\MSSQL\$instance""
    SQLUSERDBDIR="""+$userDbDrive+":\MSSQL\$instance\MSSQL10_50."+$instance+"\MSSQL\Data""
    SQLUSERDBLOGDIR="""+$userLogDrive+":\MSSQL\$instance\MSSQL10_50."+$instance+"\MSSQL\Tlog""
    SQLTEMPDBDIR="""+$tempDbDrive+":\MSSQL\$instance\MSSQL10_50."+$instance+"\MSSQL\Data""
    SQLTEMPDBLOGDIR="""+$tempLogDrive+":\MSSQL\$instance\MSSQL10_50."+$instance+"\MSSQL\Tlog""
    SQLBACKUPDIR="""+$backup_directory+":\MSSQL\$instance_name\MSSQL10_50."+$instance_name+"\MSSQL\Backup""
    FILESTREAMLEVEL=""0""
    TCPENABLED=""1""
    NPENABLED=""1""
    SQLSVCACCOUNT=""$ServiceAccountName""
    SQLSVCSTARTUPTYPE=""Automatic""
    AGTSVCACCOUNT=""$ServiceAccountName""
    AGTSVCSTARTUPTYPE=""Automatic""
    ISSVCACCOUNT=""NT AUTHORITY\NetworkService""
    ISSVCSTARTUPTYPE=""Automatic""
    BROWSERSVCSTARTUPTYPE=""Automatic""
    SQLSYSADMINACCOUNTS=""$ServiceAccountName""
    SECURITYMODE=""SQL""
    SQMREPORTING=""False"""

    $config
    }

    $instance = $instance.ToUpper()
    $environ = $instance.Substring($instance.length-1)
    $hostName = get-content env:computername

    #######################[ Creating Ini File ]##############################

    $workDir = pwd

    "Creating Ini File for Installation..."
    $configFile = "C:\sql2008_"+$instance+"_install.ini"

    prepareConfigFile $instance $instDrive $userDbDrive $userLogDrive $tempDbDrive $tempLogDrive $collation $backup_directory | Out-File $configFile

    "Configuration File written to: "+$configFile

    ################[ Installing Prerequisites ]##############################

    "Installing Prerequisites (.Net, etc) ..."
    installPrereqs

    set-location $sourceDir

    "Starting SQL 2008 Base Installation..."
    $installCmd = "C:\SQL\setup.exe /qs /SQLSVCACCOUNT=""$ServiceAccountName"" /SQLSVCPASSWORD=""$ServiceAccountPassword"" /SQLSYSADMINACCOUNTS=""$ServiceAccountName"" /AGTSVCACCOUNT=""$ServiceAccountName"" /AGTSVCPASSWORD=""$ServiceAccountPassword"" /SAPWD=""$saPassword"" /ConfigurationFile=""$configFile"""

    Invoke-Expression $installCmd
    set-location $workDir

    ##################[ END-OF-SCRIPT ]###########################

  • #33206

    Keymaster
    Points: 7
    Rank: Member

    Remote shells usually have a memory limit applied in the WinRM configuration – you can see it under the WinRM: drive, under the Server path on the remote machine. I'm guessing the SQL Server installer is exceeding the memory limit, and so you may need to adjust it.

The topic ‘MSSQL Remote Installation using Powershell’ is closed to new replies.