先にまとめを、後半に詳細を書きます。
まとめ
以下で SQL Server 2016 をサイレントインストールできます。
スクリプトをたたくだけで SQL Server インストールが完了します。
$scriptDir=Split-Path $MyInvocation.MyCommand.Path -Parent
$isoPath = $scriptDir + "\..\ISO\SQLServer2016.iso"
$confPath = $scriptDir + "\..\Config\ConfigurationFile.ini"
# ISOマウント
Mount-DiskImage $isoPath
# ドライブ取得
$driveLetter = (Get-DiskImage -ImagePath $isoPath | Get-Volume).DriveLetter
$driveRootPath = "{0}:\" -f $driveLetter
$sQLServerSetupExe = $driveRootPath + "SETUP.exe"
# SQL Server2016インストール
Start-Process -FilePath $sQLServerSetupExe -ArgumentList "/SAPWD=$password /IAcceptSQLServerLicenseTerms=True /Configurationfile=$confPath" -Verb runas -Wait
# ISOマウント解除
Dismount-DiskImage $isoPath
詳細
ISO ファイルをマウントする
まず、SQL Server2016のISOファイルをマウントします。
$isoPath = "E:\ISO\SQLServer2016.iso"
Mount-DiskImage $isoPath
マウント先のドライブを取得する
インストーラーを実行するためにマウント先のドライブを取得します。
$driveLetter = (Get-DiskImage -ImagePath $isoPath | Get-Volume).DriveLetter
$driveRootPath = "{0}:\" -f $driveLetter
SQL Server 2016 をサイレントインストールする
SETUP.exe を実行します。
「-Verb runas」で管理者権限で実行できます。
「-Wait」で実行完了まで待機します。
$sQLServerSetupExe = $driveRootPath + "SETUP.exe"
$scriptDir=Split-Path $MyInvocation.MyCommand.Path -Parent
$confPath=$scriptDir+"\..\Config\ConfigurationFile.ini"
Start-Process -FilePath $sQLServerSetupExe -ArgumentList "/SAPWD=$password /IAcceptSQLServerLicenseTerms=True /Configurationfile=$confPath" -Verb runas -Wait
/SAPWD で saのパスワードを指定します。
/IAcceptSQLServerLicenseTerms を有効にしないとサイレントインストールが出来ません。
/Configurationfile に設定ファイルのパスを指定します。
ConfigurationFile.ini は自前で用意する必要有ります。
GUI でインストールを進めて作成することも出来ます。
;SQL Server 2016 Configuration File
[OPTIONS]
; INSTALL、UNINSTALL、UPGRADE などのセットアップ ワークフローを指定します。これは必須のパラメーターです。
ACTION="Install"
; コマンド ラインから実行する際は、SQL Server セットアップがプライバシーに関する声明を表示しないように指定します。
SUPPRESSPRIVACYSTATEMENTNOTICE="False"
; このパラメーターを指定し、Microsoft R オープンおよび Microsoft R サーバーの条件を承諾すると、使用条件を読み理解したことに同意いただいたとみなされます。
IACCEPTROPENLICENSETERMS="False"
; ローカライズ版の Windows オペレーティング システムに英語版の SQL Server をインストールするには、/ENU パラメーターを使用します。
ENU="False"
; ユーザー インターフェイスは表示されません。
QUIET="False"
; ユーザー操作はなく、進行状況だけが表示されます。
QUIETSIMPLE="True"
; ユーザー インターフェイスの動作を制御するパラメーターです。有効な値は Normal (完全な UI の場合)、AutoAdvance (簡易 UI の場合)、および EnableUIOnServerCore (GUI ブロックをバイパスする Server Core セットアップの場合) です。
; UIMODE="Normal"
; SQL Server セットアップで更新プログラムを検出して含める必要があるかどうかを指定します。有効な値は、True と False または 1 と 0 です。既定では、SQL Server セットアップには、検出された更新プログラムが含まれます。
UpdateEnabled="True"
; このパラメーターが指定された場合、このコンピューターでは Microsoft Update を使用して更新プログラムが確認されます。
USEMICROSOFTUPDATE="False"
; インストール、アンインストール、またはアップグレードを行う機能を指定します。最上位の機能には、SQL、AS、RS、IS、MDS、ツールなどがあります。SQL 機能では、データベース エンジン、レプリケーション、フルテキスト、および Data Quality Services (DQS) サーバーがインストールされます。ツール機能では、Management Tools、Books オンライン コンポーネント、SQL Server Data Tools、その他の共有コンポーネントがインストールされます。
FEATURES=SQLENGINE,CONN,BC,SDK,BOL,SNAC_SDK
; SQL Server セットアップが更新プログラムを取得する場所を指定します。有効な値は、"MU" (Microsoft Update を検索)、有効なフォルダー パス、.\MyUpdates のような相対パス、または UNC 共有です。既定では、SQL Server セットアップは Microsoft Update を検索するか、Window Server Update Services を通じて Windows Update サービスを検索します。
UpdateSource="MU"
; コマンド ライン パラメーターの使用方法を表示します
HELP="False"
; 詳細なセットアップ ログをコンソールにパイプすることを指定します。
INDICATEPROGRESS="False"
; セットアップで WOW64 にインストールするよう指定します。このコマンド ライン引数は、IA64 や 32 ビット システム上ではサポートされません。
X86="False"
; 既定のインスタンスまたは名前付きインスタンスを指定します。既定のインスタンスは、Express 以外のエディションの場合は MSSQLSERVER、Express エディションの場合は SQLExpress です。SQL Server データベース エンジン (SQL)、Analysis Services (AS)、または Reporting Services (RS) のインストール時には、このパラメーターが必須です。
INSTANCENAME="TEST_INSTANCE"
; 共有コンポーネントのルート インストール ディレクトリを指定します。このディレクトリは、共有コンポーネントのインストール後は変更されません。
INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
; WOW64 共有コンポーネントのルート インストール ディレクトリを指定します。このディレクトリは、WOW64 共有コンポーネントのインストール後は変更されません。
INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"
; 指定した SQL Server 機能のインスタンス ID を指定してください。SQL Server のディレクトリ構造、レジストリ構造、およびサービス名には、SQL Server インスタンスのインスタンス ID が組み込まれます。
INSTANCEID="TEST"
; TelemetryUserNameConfigDescription
SQLTELSVCACCT="NT Service\SQLTELEMETRY$TEST"
; TelemetryStartupConfigDescription
SQLTELSVCSTARTUPTYPE="Automatic"
; インストール ディレクトリを指定します。
INSTANCEDIR="C:\Program Files\Microsoft SQL Server"
; エージェント アカウント名
AGTSVCACCOUNT="NT Service\SQLAgent$TEST"
; インストール後にサービスを自動的に開始します。
AGTSVCSTARTUPTYPE="Manual"
; CM ブリックの TCP 通信ポート
COMMFABRICPORT="0"
; マトリックスでのプライベート ネットワークの使用方法
COMMFABRICNETWORKLEVEL="0"
; ブリック間の通信を保護する方法
COMMFABRICENCRYPTION="0"
; CM ブリックで使用される TCP ポート
MATRIXCMBRICKCOMMPORT="0"
; SQL Server サービスのスタートアップの種類。
SQLSVCSTARTUPTYPE="Automatic"
; FILESTREAM 機能を有効にするレベル (0、1、2、または 3)。
FILESTREAMLEVEL="3"
; FILESTREAM ファイル I/O 用に作成する Windows 共有の名前。
FILESTREAMSHARENAME="TEST"
; SQL Server Express で RANU を有効にするには、"1" に設定します。
ENABLERANU="False"
; データベース エンジンに使用する Windows 照合順序または SQL 照合順序を指定します。
SQLCOLLATION="Japanese_CI_AS"
; SQL Server サービスのアカウント: ドメイン\ユーザーまたはシステム アカウント。
SQLSVCACCOUNT="NT Service\MSSQL$TEST"
; SQL Server サービスのファイルのインスタント初期化を有効にするには "True" に設定します。有効になると、セットアップは、Perform Volume Maintenance Task 特権をデータベース エンジン サービス SID に付与します。承認されていないプリンシパルが削除されたコンテンツにアクセスできてしまうことがあるため、情報漏えいにつながるおそれがあります。
SQLSVCINSTANTFILEINIT="False"
; SQL Server のシステム管理者として準備する Windows アカウント。
SQLSYSADMINACCOUNTS="WORKGROUP\user" "TEST\Administrator"
; 既定値は Windows 認証です。混合モード認証の場合は "SQL" を使用してください。
SECURITYMODE="SQL"
; データベース エンジンの TempDB ファイルの数。
SQLTEMPDBFILECOUNT="4"
; データベース エンジン TempDB データ ファイルの初期サイズを MB 単位で指定します。
SQLTEMPDBFILESIZE="8"
; 各データベース エンジン TempDB データ ファイルの自動拡張増分値を MB 単位で指定します。
SQLTEMPDBFILEGROWTH="64"
; データベース エンジン TempDB ログ ファイルの初期サイズを MB 単位で指定します。
SQLTEMPDBLOGFILESIZE="8"
; 各データベース エンジン TempDB ログ ファイルの自動拡張増分値を MB 単位で指定します。
SQLTEMPDBLOGFILEGROWTH="64"
; データベース エンジンのルート データ ディレクトリ。
INSTALLSQLDATADIR="E:\TEST"
; データベース エンジンのバックアップ ファイルの既定のディレクトリ。
SQLBACKUPDIR="E:\TEST\Backup"
; データベース エンジンのユーザー データベースの既定のディレクトリ。
SQLUSERDBDIR="E:\TEST\Data"
; データベース エンジンの TempDB ファイルのディレクトリ。
SQLTEMPDBDIR="E:\TEST\Data"
; 現在のユーザーを %SQL_PRODUCT_SHORT_NAME% Express のデータベース エンジン システム管理者として準備します。
ADDCURRENTUSERASSQLADMIN="False"
; TCP/IP プロトコルを無効にするには 0 を、有効にするには 1 を指定します。
TCPENABLED="1"
; Named Pipes プロトコルを無効にするには 0 を、有効にするには 1 を指定します。
NPENABLED="0"
; Browser サービスのスタートアップの種類。
BROWSERSVCSTARTUPTYPE="Automatic"
「QUIETSIMPLE=”True”」で進捗状況を表示するといいかもしれません。
ISO ファイルのマウントを解除する
インストールが完了したらマウントを解除します。
Dismount-DiskImage $isoPath