PowershellでMSSqlServer2019のサイレントインストール

## 要約
* SQLServer2019をサイレントインストール
* 需要が行方不明
* インストーラ本体は手動でダウンロードする必要がある
    * 下記で作成するinstallSqlserver.ps1と同じディレクトリに配置が必要
    * SQLEXPR2019_x64_JPN.exe　インストーラの名前はこれで固定

## 必須ファイルの作成
* 基本コピペ作成でOK
    * 変えたい設定を下記のファイルの説明を読んで適宜変更すれば、完成
* ps1ファイルの最初の変数のところは書き換える
* ConfigurationFile2019.iniはインストーラを手動実行して最後に取得できるものと同じ

```installSqlserver.ps1
# ------------------------------------------------------------------------------------------------------------------------------------------------
#  install sqlserver 2019
# ------------------------------------------------------------------------------------------------------------------------------------------------
# saのパスワードを設定する
$password2019 = "[パスワード]"
# iniファイルのパス、相対でもいける
$conf2019path = "ConfigurationFile2019.ini"

# expand setupfolder
Start-Process -Wait -FilePath .\SQLEXPR2019_x64_JPN.exe -ArgumentList "/qs /x:setup2019"
# install sql2019
Start-Process -FilePath .\setup2019\setup.exe -ArgumentList "/SAPWD=${password2019} /IAcceptSQLServerLicenseTerms=True /Configurationfile=${conf2019path}" -Verb runas -Wait
# remove setupfolder
Remove-Item -Recurse -Force setup2019
# port 1433
stop-service MSSQL`$SQLEXPR2019
set-itemproperty -path 'HKLM:\software\microsoft\microsoft sql server\mssql15.SQLEXPR2019\mssqlserver\supersocketnetlib\tcp\ipall' -name tcpdynamicports -value ''
set-itemproperty -path 'HKLM:\software\microsoft\microsoft sql server\mssql15.SQLEXPR2019\mssqlserver\supersocketnetlib\tcp\ipall' -name tcpport -value 1433
set-itemproperty -path 'HKLM:\software\microsoft\microsoft sql server\mssql15.SQLEXPR2019\mssqlserver\' -name LoginMode -value 2

# add path sqlcmd　インストーラがやってくれるのでいらない
# $env:path += ";C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn"

# ------------------------------------------------------------------------------------------------------------------------------------------------
#  restart SQL
# ------------------------------------------------------------------------------------------------------------------------------------------------

Start-Service MSSQL`$SQLEXPR2019
```



```ConfigurationFile2019.ini

;SQL Server 2019 Configuration File
[OPTIONS]

; このパラメーターを指定し、Microsoft Python オープンおよび Microsoft Python サーバーの条件を承諾すると、利用規約を読み理解したことに同意いただいたとみなされます。 

IACCEPTPYTHONLICENSETERMS="False"

; INSTALL、UNINSTALL、UPGRADE などのセットアップ ワークフローを指定します。これは必須のパラメーターです。 

ACTION="Install"

; セットアップ ロールはあらかじめ設定された構成で SQL Server をインストールします。 

ROLE="AllFeatures_WithDefaults"

; このパラメーターを指定し、Microsoft R オープンおよび Microsoft R サーバーの条件を承諾すると、利用規約を読み理解したことに同意いただいたとみなされます。 

IACCEPTROPENLICENSETERMS="False"

; コマンド ラインから実行する際は、SQL Server セットアップがプライバシーに関する声明を表示しないように指定します。 

SUPPRESSPRIVACYSTATEMENTNOTICE="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="False"

; このパラメーターが指定された場合、このコンピューターでは Microsoft Update を使用して更新プログラムが確認されます。 

USEMICROSOFTUPDATE="False"

; コマンド ラインから実行する際は、SQL Server セットアップで有料エディションの通知が表示されないように指定します。 

SUPPRESSPAIDEDITIONNOTICE="False"

; SQL Server セットアップが更新プログラムを取得する場所を指定します。有効な値は、"MU" (Microsoft Update を検索)、有効なフォルダー パス、.\MyUpdates のような相対パス、または UNC 共有です。既定では、SQL Server セットアップは Microsoft Update を検索するか、Window Server Update Services を通じて Windows Update サービスを検索します。 

UpdateSource="MU"

; インストール、アンインストール、またはアップグレードを行う機能を指定します。最上位の機能には、SQL、AS、IS、MDS、ツールなどがあります。SQL 機能では、データベース エンジン、レプリケーション、フルテキスト、および Data Quality Services (DQS) サーバーがインストールされます。ツール機能では共有コンポーネントがインストールされます。 

FEATURES=SQLENGINE,REPLICATION,SNAC_SDK

; コマンド ライン パラメーターの使用方法を表示します。 

HELP="False"

; 詳細なセットアップ ログをコンソールにパイプすることを指定します。 

INDICATEPROGRESS="False"

; セットアップで WOW64 にインストールするよう指定します。このコマンド ライン引数は、IA64 や 32 ビット システム上ではサポートされません。 

X86="False"

; 既定のインスタンスまたは名前付きインスタンスを指定します。既定のインスタンスは、Express Edition 以外の場合は MSSQLSERVER、Express Edition の場合は SQLExpress です。SQL Server データベース エンジン (SQL) または Analysis Services (AS) のインストール時には、このパラメーターが必須です。 

INSTANCENAME="SQLEXPR2019"

; 共有コンポーネントのルート インストール ディレクトリを指定します。このディレクトリは、共有コンポーネントのインストール後は変更されません。 

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="SQLEXPR2019"

; SQL Server CEIP サービスのアカウント: ドメイン\ユーザーまたはシステム アカウント。 

SQLTELSVCACCT="NT Service\SQLTELEMETRY$SQLEXPR2019"

; SQL Server CEIP サービスのスタートアップの種類。 

SQLTELSVCSTARTUPTYPE="Automatic"

; インストール ディレクトリを指定します。 

INSTANCEDIR="C:\Program Files\Microsoft SQL Server"

; エージェント アカウント名 

AGTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE"

; インストール後にサービスを自動的に開始します。 

AGTSVCSTARTUPTYPE="Manual"

; CM ブリックの TCP 通信ポート 

COMMFABRICPORT="0"

; マトリックスでのプライベート ネットワークの使用方法 

COMMFABRICNETWORKLEVEL="0"

; ブリック間の通信を保護する方法 

COMMFABRICENCRYPTION="0"

; CM ブリックで使用される TCP ポート 

MATRIXCMBRICKCOMMPORT="0"

; SQL Server サービスのスタートアップの種類。 

SQLSVCSTARTUPTYPE="Automatic"

; FILESTREAM 機能を有効にするレベル (0、1、2、または 3)。 

FILESTREAMLEVEL="0"

; 並列処理の最大限度 (MAXDOP) のサーバー構成オプション。 

SQLMAXDOP="0"

; SQL Server Express で RANU を有効にするには、"1" に設定します。 

ENABLERANU="True"

; データベース エンジンに使用する Windows 照合順序または SQL 照合順序を指定します。 

SQLCOLLATION="Japanese_CI_AS"

; SQL Server サービスのアカウント: ドメイン\ユーザーまたはシステム アカウント。 

SQLSVCACCOUNT="NT Service\MSSQL$SQLEXPR2019"

; SQL Server サービスのファイルのインスタント初期化を有効にするには "True" に設定します。有効になると、セットアップは、Perform Volume Maintenance Task 特権をデータベース エンジン サービス SID に付与します。承認されていないプリンシパルが削除されたコンテンツにアクセスできてしまうことがあるため、情報漏えいにつながるおそれがあります。 

SQLSVCINSTANTFILEINIT="False"

; SQL Server のシステム管理者として準備する Windows アカウント。 

SQLSYSADMINACCOUNTS="BUILTIN\Administrators"

; 既定値は Windows 認証です。混合モード認証の場合は "SQL" を使用してください。 

SECURITYMODE="SQL"

; データベース エンジンの TempDB ファイルの数。 

SQLTEMPDBFILECOUNT="1"

; データベース エンジン TempDB データ ファイルの初期サイズを MB 単位で指定します。 

SQLTEMPDBFILESIZE="8"

; 各データベース エンジン TempDB データ ファイルの自動拡張増分値を MB 単位で指定します。 

SQLTEMPDBFILEGROWTH="64"

; データベース エンジン TempDB ログ ファイルの初期サイズを MB 単位で指定します。 

SQLTEMPDBLOGFILESIZE="8"

; 各データベース エンジン TempDB ログ ファイルの自動拡張増分値を MB 単位で指定します。 

SQLTEMPDBLOGFILEGROWTH="64"

; データベース エンジンのバックアップ ファイルの既定のディレクトリ。 

SQLBACKUPDIR="C:\SQLServer2019Backup\backup2019"

; 現在のユーザーを SQL Server 2019 Express のデータベース エンジン システム管理者としてプロビジョニングします。 

ADDCURRENTUSERASSQLADMIN="False"

; TCP/IP プロトコルを無効にするには 0 を、有効にするには 1 を指定します。 

TCPENABLED="1"

; Named Pipes プロトコルを無効にするには 0 を、有効にするには 1 を指定します。 

NPENABLED="0"

; Browser サービスのスタートアップの種類。 

BROWSERSVCSTARTUPTYPE="Automatic"

; SQLMAXMEMORY を使用して、OS に有害なメモリ負荷が発生するリスクを最小限にします。 

SQLMAXMEMORY="2147483647"

; SQLMINMEMORY を使用して、SQL Server Memory Manager で使用可能な最小メモリを予約します。 

SQLMINMEMORY="0"


```