Installing SharePoint 2016 with PowerShell Desired State Configuration (DSC)

This article is a step by step guide of how to configure a new SharePoint 2016 Single Server farm instance using PowerShell Desired State Configuration (DSC). The example covered in this tutorial is using an Azure Virtual Machine running the Windows Server 2012 R2 image.

Technical Specifications

  • Windows Server 2012 R2(x64)
  • Domain is contoso.com
  • D11 Azure VM (2 cores, 14GB of RAM)
  • SQL Server 2016 CTP 3

Prerequisites

1 – Download and configure the xSharePoint DSC Resource

The first thing you will need to do is go download and configure the xSharePoint DSC resource. While the official bits are officially hosted on the PowerShell Gallery (PowerShellGallery.org), the SharePoint 2016 bits are still only available on the Github repository at the time of writing this article.

1.1) Navigate to the Github Repository http://github.com/PowerShell/SharePointDSC

1.2) On the right hand side, click on the “Download ZIP” button

Download

1.3) Extract the xSharePoint folder (located in Zip at xSharePoint-dev > Modules) to C:\Program Files\WindowsPowerShell\Modules\

Extract

2 – Install PowerShell 5

In order to leverage the PowerShell Get features from the following sections, you will require that the Windows Management Framework 5.0 be installed on your server.

2.1) Download the WMF 5.0 package (February 2015 Preview) from Microsoft’s Download Center from here

2.2) Install the Windows Management Framework 5.0 on your server.

2.3) Reboot your server.

3 – Download the xDisk DSC resource

Because this resource is actually located in the PowerShell Gallery we can user OneGet to automatically download and configure the resource.

3.1) In a PowerShell console, execute the following line of code. When prompted to add the package provider and to install from an untrusted location, enter ‘Y’ on both occasions.

Install-Module -Name xDisk

Installxdisk

4 – Download the xCredSSP DSC Resource

Just like the xDisk resource, the xCredSSP resource is also available from the PowerShell Gallery.

4.1) To download and configure it automatically, run the following line of PowerShell. Again, when prompted to install from an untrusted repository, enter ‘y’.

Install-Module -Name xCredSSP

InstallxCredssp

5 – Download the xWebAdministration DSC Resource

The story repats itself once more. In order to properly configure your environment, you will also require the xWebAdministration DSC resource to be downloaded and configured.

5.1) To download and configure it automatically, simply run the following line of PowerShell. When prompted to install from an untrusted repository, enter ‘y’.

Install-Module -Name xWebAdministration

6 – SQL Server 2016 CTP 3

I am cheating a bit in this tutorial. Normally you would want to connect your SharePoint farm to a separate SQL server, but in my case to keep things simple, I will be running both the SharePoint 2016 and SQL Server 2016 bits on the same server. Therefore I will manually go and configure a new default instance of SQL Server 2016 using an account called contoso\sqlinstall

7 – Extract the SharePoint Binaries

7.1) Download the SharePoint 2016 Beta 2 https://www.microsoft.com/en-us/download/details.aspx?id=49961

7.2) Mount the SharePoint 2016 iso onto a drive, in my case F:\

8 – Unblock the DSC Resource Files

Very often, PowerShell modules downloaded from the internet will be blocked, meaning that the Server operating system will prevent their execution. In order to allow the DSC engine to properly configure our environment, we need to make sure all resource files are properly unlocked.

8.1) Run the following line of PowerShell:

Get-ChildItem -Path "C:\Program Files\WindowsPowershell\Modules\xSharePoint" -Recurse | Unblock-File

9 – Configure the WinRM

To allow DSC to properly execute remote commands (even though it will execute it locally under different credentials), we need to configure the WinRM protocol on our server.

9.1) Execute the following line of PowerShell as an administrator:

WinRM QuickConfig

10 – Write your Desired State Configuration (DSC) Script

10.1) Create the DSC Configuration Script. Copy the following lines of PowerShell code and save them in a file at C:\Scripts\SharePoint2016Config.ps1

Configuration SharePointServer
{
param (
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $CredSSPDelegates,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $SPBinaryPath,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $ULSViewerPath,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [PSCredential] $SPBinaryPathCredential,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [PSCredential] $FarmAccount,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [PSCredential] $InstallAccount,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $ProductKey,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $DatabaseServer,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $FarmPassPhrase,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [PSCredential] $WebPoolManagedAccount,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [PSCredential] $ServicePoolManagedAccount,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $WebAppUrl,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $TeamSiteUrl,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [string] $MySiteHostUrl,
[Parameter(Mandatory=$true)] [ValidateNotNullorEmpty()] [int] $CacheSizeInMB
)
Import-DscResource -ModuleName xSharePoint
Import-DscResource -ModuleName xWebAdministration
Import-DscResource -ModuleName xCredSSP
Import-DscResource -ModuleName xDisk
node "localhost"
{
#**********************************************************
# Server configuration
#
# This section of the configuration includes details of the
# server level configuration, such as disks, registry
# settings etc.
#**********************************************************
xCredSSP CredSSPServer { Ensure = "Present"; Role = "Server" }
xCredSSP CredSSPClient { Ensure = "Present"; Role = "Client"; DelegateComputers = $CredSSPDelegates }
#**********************************************************
# Software downloads
#
# This section details where any binary downloads should
# be downloaded from and put locally on the server before
# installation takes place
#**********************************************************
File SPBinaryDownload
{
DestinationPath = "C:\SPInstall"
Credential = $SPBinaryPathCredential
Ensure = "Present"
SourcePath = $SPBinaryPath
Type = "Directory"
Recurse = $true
}
#**********************************************************
# Binary installation
#
# This section triggers installation of both SharePoint
# as well as the prerequisites required
#**********************************************************
xSPInstallPrereqs InstallPrerequisites
{
InstallerPath = "C:\SPInstall\Prerequisiteinstaller.exe"
OnlineMode = $true
SQLNCli = "C:\SPInstall\prerequisiteinstallerfiles\sqlncli.msi"
PowerShell = "C:\SPInstall\prerequisiteinstallerfiles\Windows6.1-KB2506143-x64.msu"
NETFX = "C:\SPInstall\prerequisiteinstallerfiles\dotNetFx45_Full_setup.exe"
IDFX = "C:\SPInstall\prerequisiteinstallerfiles\Windows6.1-KB974405-x64.msu"
Sync = "C:\SPInstall\prerequisiteinstallerfiles\Synchronization.msi"
AppFabric = "C:\SPInstall\prerequisiteinstallerfiles\WindowsServerAppFabricSetup_x64.exe"
IDFX11 = "C:\SPInstall\prerequisiteinstallerfiles\MicrosoftIdentityExtensions-64.msi"
MSIPCClient = "C:\SPInstall\prerequisiteinstallerfiles\setup_msipc_x64.msi"
WCFDataServices = "C:\SPInstall\prerequisiteinstallerfiles\WcfDataServices.exe"
KB2671763 = "C:\SPInstall\prerequisiteinstallerfiles\AppFabric1.1-RTM-KB2671763-x64-ENU.exe"
WCFDataServices56 = "C:\SPInstall\prerequisiteinstallerfiles\WcfDataServices56.exe"
Ensure = "Present"
}
xSPInstall InstallBinaries
{
BinaryDir = "C:\SPInstall"
ProductKey = $ProductKey
Ensure = "Present"
DependsOn = "[xSPInstallPrereqs]InstallPrerequisites"
}
#**********************************************************
# IIS clean up
#
# This section removes all default sites and application
# pools from IIS as they are not required
#**********************************************************
xWebAppPool RemoveDotNet2Pool { Name = ".NET v2.0"; Ensure = "Absent"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites" }
xWebAppPool RemoveDotNet2ClassicPool { Name = ".NET v2.0 Classic"; Ensure = "Absent"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites" }
xWebAppPool RemoveDotNet45Pool { Name = ".NET v4.5"; Ensure = "Absent"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites"; }
xWebAppPool RemoveDotNet45ClassicPool { Name = ".NET v4.5 Classic"; Ensure = "Absent"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites"; }
xWebAppPool RemoveClassicDotNetPool { Name = "Classic .NET AppPool"; Ensure = "Absent"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites" }
xWebAppPool RemoveDefaultAppPool { Name = "DefaultAppPool"; Ensure = "Absent"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites" }
xWebSite RemoveDefaultWebSite { Name = "Default Web Site"; Ensure = "Absent"; PhysicalPath = "C:\inetpub\wwwroot"; DependsOn = "[xSPInstallPrereqs]InstallPrerequisites" }
#**********************************************************
# Basic farm configuration
#
# This section creates the new SharePoint farm object, and
# provisions generic services and components used by the
# whole farm
#**********************************************************
xSPCreateFarm CreateSPFarm
{
DatabaseServer = $DatabaseServer
FarmConfigDatabaseName = "SP_Config"
Passphrase = $FarmPassPhrase
FarmAccount = $FarmAccount
InstallAccount = $InstallAccount
AdminContentDatabaseName = "SP_AdminContent"
DependsOn = "[xSPInstall]InstallBinaries"
}
xSPManagedAccount ServicePoolManagedAccount
{
AccountName = $ServicePoolManagedAccount.UserName
Account = $ServicePoolManagedAccount
Schedule = ""
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPManagedAccount WebPoolManagedAccount
{
AccountName = $WebPoolManagedAccount.UserName
Account = $WebPoolManagedAccount
Schedule = ""
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPDiagnosticLoggingSettings ApplyDiagnosticLogSettings
{
InstallAccount = $InstallAccount
LogPath = "C:\ULSLogs"
LogSpaceInGB = 10
AppAnalyticsAutomaticUploadEnabled = $false
CustomerExperienceImprovementProgramEnabled = $true
DaysToKeepLogs = 7
DownloadErrorReportingUpdatesEnabled = $false
ErrorReportingAutomaticUploadEnabled = $false
ErrorReportingEnabled = $false
EventLogFloodProtectionEnabled = $true
EventLogFloodProtectionNotifyInterval = 5
EventLogFloodProtectionQuietPeriod = 2
EventLogFloodProtectionThreshold = 5
EventLogFloodProtectionTriggerPeriod = 2
LogCutInterval = 15
LogMaxDiskSpaceUsageEnabled = $true
ScriptErrorReportingDelay = 30
ScriptErrorReportingEnabled = $true
ScriptErrorReportingRequireAuth = $true
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPUsageApplication UsageApplication
{
Name = "Usage Service Application"
DatabaseName = "SP_Usage"
UsageLogCutTime = 5
UsageLogLocation = "C:\UsageLogs"
UsageLogMaxFileSizeKB = 1024
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPStateServiceApp StateServiceApp
{
Name = "State Service Application"
DatabaseName = "SP_State"
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPDistributedCacheService EnableDistributedCache
{
Name = "AppFabricCachingService"
Ensure = "Present"
CacheSizeInMB = $CacheSizeInMB
ServiceAccount = $ServicePoolManagedAccount.UserName
InstallAccount = $InstallAccount
DependsOn = @('[xSPCreateFarm]CreateSPFarm','[xSPManagedAccount]ServicePoolManagedAccount')
CreateFirewallRules = $true
}
#**********************************************************
# Web applications
#
# This section creates the web applications in the
# SharePoint farm, as well as managed paths and other web
# application settings
#**********************************************************
xSPWebApplication HostNameSiteCollectionWebApp
{
Name = "SharePoint Sites"
ApplicationPool = "SharePoint Sites"
ApplicationPoolAccount = $WebPoolManagedAccount.UserName
AllowAnonymous = $false
AuthenticationMethod = "NTLM"
DatabaseName = "SP_Content_01"
DatabaseServer = $DatabaseServer
Url = $WebAppUrl
Port = 80
InstallAccount = $InstallAccount
DependsOn = "[xSPManagedAccount]WebPoolManagedAccount"
}
xSPManagedPath TeamsManagedPath
{
WebAppUrl = "http://$WebAppUrl"
InstallAccount = $InstallAccount
RelativeUrl = "teams"
Explicit = $false
HostHeader = $true
DependsOn = "[xSPWebApplication]HostNameSiteCollectionWebApp"
}
xSPManagedPath PersonalManagedPath
{
WebAppUrl = "http://$WebAppUrl"
InstallAccount = $InstallAccount
RelativeUrl = "personal"
Explicit = $false
HostHeader = $true
DependsOn = "[xSPWebApplication]HostNameSiteCollectionWebApp"
}
xSPCacheAccounts SetCacheAccounts
{
WebAppUrl = "http://$WebAppUrl"
SuperUserAlias = "DEMO\svxSPSuperUser"
SuperReaderAlias = "DEMO\svxSPReader"
InstallAccount = $InstallAccount
DependsOn = "[xSPWebApplication]HostNameSiteCollectionWebApp"
}
#**********************************************************
# Service instances
#
# This section describes which services should be running
# and not running on the server
#**********************************************************
xSPServiceInstance ClaimsToWindowsTokenServiceInstance
{
Name = "Claims to Windows Token Service"
Ensure = "Present"
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPServiceInstance UserProfileServiceInstance
{
Name = "User Profile Service"
Ensure = "Present"
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPServiceInstance SecureStoreServiceInstance
{
Name = "Secure Store Service"
Ensure = "Present"
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPServiceInstance ManagedMetadataServiceInstance
{
Name = "Managed Metadata Web Service"
Ensure = "Present"
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPServiceInstance BCSServiceInstance
{
Name = "Business Data Connectivity Service"
Ensure = "Present"
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPUserProfileSyncService UserProfileSyncService
{
UserProfileServiceAppName = "User Profile Service Application"
Ensure = "Present"
FarmAccount = $FarmAccount
InstallAccount = $InstallAccount
DependsOn = "[xSPUserProfileServiceApp]UserProfileServiceApp"
}
#**********************************************************
# Service applications
#
# This section creates service applications and required
# dependencies
#**********************************************************
xSPServiceAppPool MainServiceAppPool
{
Name = "SharePoint Service Applications"
ServiceAccount = $ServicePoolManagedAccount.UserName
InstallAccount = $InstallAccount
DependsOn = "[xSPCreateFarm]CreateSPFarm"
}
xSPUserProfileServiceApp UserProfileServiceApp
{
Name = "User Profile Service Application"
ApplicationPool = "SharePoint Service Applications"
MySiteHostLocation = "http://$MySiteHostUrl"
ProfileDBName = "SP_UserProfiles"
ProfileDBServer = $DatabaseServer
SocialDBName = "SP_Social"
SocialDBServer = $DatabaseServer
SyncDBName = "SP_ProfileSync"
SyncDBServer = $DatabaseServer
FarmAccount = $FarmAccount
InstallAccount = $InstallAccount
DependsOn = @('[xSPServiceAppPool]MainServiceAppPool', '[xSPManagedPath]PersonalManagedPath', '[xSPSite]MySiteHost', '[xSPManagedMetaDataServiceApp]ManagedMetadataServiceApp','[xSPSearchServiceApp]SearchServiceApp')
}
xSPSecureStoreServiceApp SecureStoreServiceApp
{
Name = "Secure Store Service Application"
ApplicationPool = "SharePoint Service Applications"
AuditingEnabled = $true
AuditlogMaxSize = 30
DatabaseName = "SP_SecureStore"
InstallAccount = $InstallAccount
DependsOn = "[xSPServiceAppPool]MainServiceAppPool"
}
xSPManagedMetaDataServiceApp ManagedMetadataServiceApp
{
Name = "Managed Metadata Service Application"
InstallAccount = $InstallAccount
ApplicationPool = "SharePoint Service Applications"
DatabaseServer = $DatabaseServer
DatabaseName = "SP_ManagedMetadata"
DependsOn = "[xSPServiceAppPool]MainServiceAppPool"
}
xSPSearchServiceApp SearchServiceApp
{
Name = "Search Service Application"
DatabaseName = "SP_Search"
ApplicationPool = "SharePoint Service Applications"
InstallAccount = $InstallAccount
DependsOn = "[xSPServiceAppPool]MainServiceAppPool"
}
xSPBCSServiceApp BCSServiceApp
{
Name = "BCS Service Application"
ApplicationPool = "SharePoint Service Applications"
DatabaseName = "SP_BCS"
DatabaseServer = $DatabaseServer
InstallAccount = $InstallAccount
DependsOn = @('[xSPServiceAppPool]MainServiceAppPool', '[xSPSecureStoreServiceApp]SecureStoreServiceApp')
}
#**********************************************************
# Site Collections
#
# This section contains the site collections to provision
#**********************************************************
xSPSite TeamSite
{
Url = "http://$TeamSiteUrl"
OwnerAlias = $InstallAccount.UserName
HostHeaderWebApplication = "http://$WebAppUrl"
Name = "Team Sites"
Template = "STS#0"
InstallAccount = $InstallAccount
DependsOn = "[xSPWebApplication]HostNameSiteCollectionWebApp"
}
xSPSite MySiteHost
{
Url = "http://$MySiteHostUrl"
OwnerAlias = $InstallAccount.UserName
HostHeaderWebApplication = "http://$WebAppUrl"
Name = "My Site Host"
Template = "SPSMSITEHOST#0"
InstallAccount = $InstallAccount
DependsOn = "[xSPWebApplication]HostNameSiteCollectionWebApp"
}
#**********************************************************
# Local configuration manager settings
#
# This section contains settings for the LCM of the host
# that this configuraiton is applied to
#**********************************************************
LocalConfigurationManager
{
RebootNodeIfNeeded = $true
}
}
}

10.2) Take a quick look at the DSC script. The first few lines are describing what mandatory parameters need to be passed on to the configuration template upon calling it. These parameters are:

Parameter Name Description My Value
$CredSSPDelegates Name of the delegated server *.contoso.com
$SPBinaryPath Absolute path to the SharePoint 2016 installer bits F:\
$SPBinaryPathCredential Account that has access to the location where the SharePoint 2016 installation bits are located. Any account with access will do. contoso\sp_install
$FarmAccount SharePoint 2016 Farm Account contoso\sp_farm
$InstallAccount Account used to install the SharePoint 2016 bits. contoso\sp_install
$ProductKey The SharePoint 2016 Product key NQGJR-63HC8-XCRQH-MYVCH-3J3QRTrial key for SharePoint 2016 Beta 2 (180 days)
$DatabaseServer Name of the associated SQL server. localhost
$FarmPassPhrase Passphrase used to configure the farm and add additional servers. pass@word1
$WebPoolManagedAccount Account used to configure the application pool in IIS for the Web Applications. contoso\sp_webapp
$ServicePoolManagedAccount Account used to configure the application pool in IIS for the Web Services. contoso\sp_serviceapps
$WebAppUrl URL of the first web application to be created in the farm. SP2016-DSCTBD
$TeamSiteUrl URL of the Root site collection associated with the Web Application. http://localhost/
$MySiteHostUrl URL of the My Site Host site collection. http://localhost/personnal/
$CacheSizeInMB Size of the Distributed Cache size in MB. 300

10.3) Let us now create a second PowerShell script that will be responsible for declaring our parameters, and for calling the actual DSC configuration method, generating the .MOF files for our server.

."C:\Scripts\SharePoint2016Config.ps1"
 $CredSSPDelegates = "*.contoso.com"
 $SPBinaryPath = "F:\"
 $SPBinaryPathCredential = Get-Credential -UserName "contoso\sp_install" -Message "SP_Install"
 $FarmAccount = Get-Credential -UserName "contoso\sp_farm" -Message "SP_Farm"
 $InstallAccount = Get-Credential -UserName "contoso\sp_install" -Message "SP_Install"
 $ProductKey ="NQGJR-63HC8-XCRQH-MYVCH-3J3QR"
 $DatabaseServer = "SP2016-DSCTBD"
 $FarmPassPhrase = "pass@word1"
 $WebPoolManagedAccount = Get-Credential -UserName "contoso\sp_webapp" -Message "SP_WebApp"
 $ServicePoolManagedaccount = Get-Credential -UserName "contoso\sp_serviceapps" -Message "SP_ServiceApps"
 $WebAppUrl = "SP2016-DSCTBD"
 $TeamSiteUrl = "/"
 $MySiteHostUrl = "/personnal/"
 $CacheSizeInMB = 300
 $ConfigData = @{
 AllNodes = @(
 @{
 NodeName = "SP2016-DSCTBD"
 PSDscAllowPlainTextPassword = $true
 })
 }
 SharePointServer -ConfigurationData $ConfigData -CredSSPDelegates $CredSSPDelegates -SPBinaryPath $SPBinaryPath -ULSViewerPath "c:\tools\ULSViewer.exe" -SPBinaryPathCredential $SPBinaryPathCredential -FarmAccount $FarmAccount -InstallAccount $InstallAccount -ProductKey $ProductKey -DatabaseServer $DatabaseServer -FarmPassPhrase $FarmPassPhrase -WebPoolManagedAccount $WebPoolManagedAccount -ServicePoolManagedAccount $ServicePoolManagedAccount -WebAppUrl $WebAppurl -TeamSiteUrl $TeamSiteUrl -MySiteHostUrl $MySiteHostUrl -CacheSizeInMB $CacheSizeInMB

10.4) Let us now execute our script . In my case, I named it Execute.ps1 and stored it under C:\Scripts\ as well. Executing the script should generate two files: localhost.MOF and localhost.meta.MOF.

Mof

11 – Execute the Start-DSCConfiguration cmdlet

Now that we’ve generated the MOF files that are required to configure our server, we need to initiate a process on the PowerShell Local Configuration Machine to tell it to start configuring our server based on the specifications we specified in our DSC configuration script.

11.1) In a PowerShell session, execute the following line of code:

Start-DSCConfiguration -Path C:\Scripts\SharePointserver\ -Wait -Verbose -Force

Start-DSC2

12 – Reboot

After a little while, the Local Configuration Machine will require you to restart your server.

12.1) Restart the server
Reboot

Microsoft Premier Field Engineer - SharePoint

12 thoughts on “Installing SharePoint 2016 with PowerShell Desired State Configuration (DSC)

    1. Nik Charlebois

      Yes you are correct. This blog article was really just to introduce DSC in the context of SharePoint. Therefore everything is run on the same VM. I used Azure, so the OS on the VM was all preconfigured. I am currently working on a follow-up article that will go over how to configure your VM from ground up using DSC (including .NET Framework and SQL Server). It should be ready sometimes in January.

  1. Simon

    Hi Nik,

    I tried to create a new SP farm with the new SharePointDSC resource, but when I run the execute.ps1 file I get the following error:
    ConvertTo-MOFInstance : System.InvalidOperationException error processing property ‘FarmAccount’ OF TYPE ‘SPCreateFarm’: Converting and storing encrypted passwords as plain text is not recommended. For more information on securing
    credentials in MOF file, please refer to MSDN blog: http://go.microsoft.com/fwlink/?LinkId=393729

    I have already checked so I have PSDscAllowPlainTextPassword = $true defined.

    Have you seen this error before?

    -Simon

      1. Jeremiah

        The link for WMF 5.0 is broken. I’ve successfully found it else where downloaded and attempted to install on a newly stood up 2012r2 server and was giving message not applicable to this system. I’ve read that you need to make sure that you perform the WMF 4.0 install before 5.0. I successfully downloaded and installed this to the server as well and was giving the same message. Wasn’t sure if I missed something obvious or something that was not described in the article.

        Thanks for any assistance provided.

          1. Jeremiah

            The update is not applicable to your computer.

            I’ve attempted to install both 4.0 & 5.0

            PSVersion 4.0
            WSManStackVersion 3.0
            SerializationVersion 1.1.0.1
            CLRVersion 4.0.30319.42000
            BuildVersion 6.3.9600.17400
            PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
            PSRemotingProtocolVersion 2.2

            The target system is a 2012r2 server…am I just really missing something?

          2. Nik Charlebois

            I’ve updated the link to the WMF 5 RTM, and made sure to put the one for W2012R2. Please try that one to see if you get the same error.

Leave a Comment

Your email address will not be published. Required fields are marked *

*
*