Unattended Configuration for SharePoint Server 2016

SharePoint Server 2016 has some… interesting things baked into it including a few things that appear to come from SharePoint Online. A new unattended configuration for SharePoint Server 2016 is also present, using an answer file. While unadvertised, it is easy to use, but a bit harder to discover as the configuration options are buried throughout the SharePoint code base.

So, how does it work? Pretty simple. Create a file called unattend.txt. Add some entries like this:

DiagnosticsULSLocation=E:\ULS
DiagnosticsLogCutInterval=1
DiagnosticsEventLogFloodProtectionEnabled=true
DiagnosticsLogMaxDiskSpaceUsageEnabled=13
DiagnosticsLogDiskSpaceUsageGB=3

Save it to C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\CONFIG\ and build your farm through PowerShell or the Config Wizard. The answer file will be picked up and the values applied appropriately.

Post-farm build, you can see the key/value pairs located in the SPFarm object, which we can see via PowerShell.

$farm = Get-SPFarm
$farm.InitializationSettings

Key                                     Value
---                                     -----
DiagnosticsULSLocation                  E:\ULS
DiagnosticsLogCutInterval               1
DiagnosticsEventLogFloodProtectionEn... true
DiagnosticsLogMaxDiskSpaceUsageEnabled  13
DiagnosticsLogDiskSpaceUsageGB          3
BrowserCEIPEnabled                      true
ErrorReportingEnabled                   true
DownloadErrorReportingUpdates           true
ClientPerformanceMeasurementEnabled     true
AppAnalyticsAutomaticUploadEnabled      true

There are a lot of these. Some of the keys may or may not work. This isn’t a complete list of what I’ve found so far, and I’m compiling a spreadsheet of settings, but just examples of what is currently available.

Property                                Type
--------                                ------
GridZoneSMTPEnableSsl                   string
GridZoneSMTPOverrideEnvelopeSender      string
GridZoneSMTPPort                        int
GridZoneSMTPServer                      string
RecycleBinRetentionPeriod               int
SecondStageRecycleBinQuota              int
TenantXP_OutgoingEmailAddress           string
TenantXP_ReplyToEmailAddress            string
UseNewsFeedEnabledSetting               bool

There are others, as well, such as automatically creating a Secure Store Service, etc.

Pretty neat, and hopefully this is functionality that persists into the future, as it is great for pre-configured, automated environments, versus the heavy amount of post-configuration we must use with farms today!