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!

Trevor Seward is a Microsoft Office Apps and Services MVP who specializes in SharePoint Server administration, hybrid scenarios, and SharePoint Online. He has been working with SharePoint for 16 years from SharePoint 2003 on up, managing environments with terabytes of content for 150,000+ user organizations. Trevor is an author of Deploying SharePoint 2016 and Deploying SharePoint 2019. You can find him on Twitter and in /r/sharepoint.