%3CLINGO-SUB%20id%3D%22lingo-sub-1287760%22%20slang%3D%22en-US%22%3EUsing%20other%20DSC%20modules%20with%20SharePointDsc%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1287760%22%20slang%3D%22en-US%22%3E%3CP%3EWhen%20I%20create%20Desired%20State%20Configuration%20configurations%2C%20SharePointDsc%20usually%20is%20just%20one%20of%20the%20DSC%20modules%20I%20am%20using%20in%20my%20configuration.%20There%20are%20several%20other%20modules%20that%20are%20very%20useful%20when%20deploying%20or%20managing%20SharePoint%20environments.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CTABLE%20border%3D%221%22%20width%3D%22100%25%22%3E%0A%3CTBODY%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CSTRONG%3EResource%3C%2FSTRONG%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3E%3CSTRONG%3EDescription%3C%2FSTRONG%3E%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22ActiveDirectoryDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FActiveDirectoryDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EActiveDirectoryDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20manage%20Active%20Directory%20components.%20For%20example%20used%20to%20create%20service%20accounts%20or%20SharePoint%20administrators%20domain%20group.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22CertificateDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FCertificateDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ECertificateDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20manage%20Certificates.%20For%20example%20used%20to%20import%20SSL%20certificates%20into%20the%20local%20certificate%20store.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22ComputerManagementDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FComputerManagementDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EComputerManagementDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20manage%20various%20Windows%20components.%20For%20example%20used%20to%20manage%20Scheduled%20Tasks%20or%20trigger%20reboots.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22OfficeOnlineServerDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FOfficeOnlineServerDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EOfficeOnlineServerDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20install%20and%20manage%20Office%20Online%20Server.%20Office%20Online%20Server%20is%20often%20used%20alongside%20SharePoint.%20Using%20this%20module%20you%20can%20install%20and%20configure%20OOS%20in%20an%20automated%20way.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22SChannelDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FSChannelDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ESChannelDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20manage%20Secure%20Channel%20components.%20For%20example%20used%20to%20configure%20allowed%20cipher%20suites%20or%20protocols%20like%20disabling%20SSLv3%20and%20TLS%20v1.0%2Fv1.1.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22SQLServerDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FSQLServerDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ESQLServerDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20install%20and%20manage%20SQL%20Server.%20SQL%20Server%20is%20required%20to%20run%20SharePoint%2C%20but%20does%20require%20certain%20settings%2C%20like%20the%20MaxDOP%20setting%20and%20the%20database%20compatibility%20level.%20Using%20this%20module%2C%20you%20can%20configure%20SQL%20Server%20in%20an%20optimal%20way%20for%20SharePoint.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22WorkflowManagerDsc%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FWorkflowManagerDsc%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EWorkflowManagerDsc%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20install%20and%20configure%20Workflow%20Manager.%20When%20using%20SharePoint%202013%20workflows%2C%20you%20need%20the%20Workflow%20Manager%20to%20be%20deployed%20onto%20your%20SharePoint%20servers.%20This%20module%20is%20able%20to%20deploy%20Workflow%20Manager%20in%20an%20automated%20way.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22xCredSSP%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FxCredSSP%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ExCredSSP%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20manage%20CredSSP%20authentication%20settings.%20For%20example%20used%20to%20enable%20CredSSP%2C%20which%20is%20required%20to%20use%20SharePointDsc%20when%20using%20PowerShell%20v4.0%20or%20with%20specific%20SharePointDsc%20resources.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3CTR%3E%0A%3CTD%20width%3D%2240.193370165745854%25%22%20height%3D%2230px%22%3E%3CA%20title%3D%22xWebAdministration%22%20href%3D%22https%3A%2F%2Fwww.powershellgallery.com%2Fpackages%2FxWebAdministration%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3ExWebAdministration%3C%2FA%3E%3C%2FTD%3E%0A%3CTD%20width%3D%2259.806629834254146%25%22%20height%3D%2230px%22%3EResources%20to%20manage%20Internet%20Information%20Server%20(IIS)%20components.%20For%20example%20used%20to%20disable%20the%20default%20web%20site%2Fapplication%20pools%20or%20configure%20logging%20settings.%3C%2FTD%3E%0A%3C%2FTR%3E%0A%3C%2FTBODY%3E%0A%3C%2FTABLE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20below%20configuration%20is%20showing%20an%20example%20which%20is%20using%20all%20of%20the%20above%20resources%20to%20configure%20a%20server%20with%20everything%20except%20SharePoint.%20You%20can%20use%20this%20as%20a%20starting%20point%20for%20your%20own%20configuration.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-csharp%22%3E%3CCODE%3EConfiguration%20DeploySharePoint%0A%7B%20%20%0A%20%20%20%20param%0A%20%20%20%20(%0A%20%20%20%20%20%20%20%20%5BParameter(Mandatory%20%3D%20%24true)%5D%20%5BValidateNotNullorEmpty()%5D%20%5BPSCredential%5D%20%24InstallAccount%2C%0A%20%20%20%20%20%20%20%20%5BParameter(Mandatory%20%3D%20%24true)%5D%20%5BValidateNotNullorEmpty()%5D%20%5BPSCredential%5D%20%24WMRunAsCredential%2C%0A%20%20%20%20%20%20%20%20%5BParameter(Mandatory%20%3D%20%24true)%5D%20%5BValidateNotNullorEmpty()%5D%20%5BPSCredential%5D%20%24CertificatePassword%0A%20%20%20%20)%0A%20%20%20%20%0A%20%20%20%20Import-DscResource%20-ModuleName%20ActiveDirectoryDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20CertificateDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20ComputerManagementDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20OfficeOnlineServerDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20PSDesiredStateConfiguration%0A%20%20%20%20Import-DscResource%20-ModuleName%20SChannelDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20SharePointDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20SQLServerDsc%0A%20%20%20%20Import-DscResource%20-ModuleName%20xWebAdministration%0A%20%20%20%20Import-DscResource%20-ModuleName%20xCredSSP%0A%20%20%20%20Import-DscResource%20-ModuleName%20WorkflowManagerDsc%0A%0A%20%20%20%20node%20SP01%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%23%20Configure%20CredSSP%20settings%20using%20xCredSSP%0A%20%20%20%20%20%20%20%20xCredSSP%20'Server'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20Role%20%20%20%3D%20'Server'%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20xCredSSP%20'Client'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20Role%20%20%20%3D%20'Client'%0A%20%20%20%20%20%20%20%20%20%20%20%20DelegateComputers%20%3D%20%40(%22SP01%22%2C%22SP01.domain.com%22)%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20service%20account%20and%20admin%20group%20using%20ActiveDirectoryDsc%0A%20%20%20%20%20%20%20%20ADUser%20'SP_Farm'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20DomainName%20%20%20%20%20%20%20%20%20%20%20%3D%20'DOMAIN'%0A%20%20%20%20%20%20%20%20%20%20%20%20UserName%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'sp_farm'%0A%20%20%20%20%20%20%20%20%20%20%20%20UserPrincipalName%20%20%20%20%3D%20'sp_farm%40domain.com'%0A%20%20%20%20%20%20%20%20%20%20%20%20Password%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%20%20%20%20DisplayName%20%20%20%20%20%20%20%20%20%20%3D%20'SharePoint%20Farm%20Service%20Account'%0A%20%20%20%20%20%20%20%20%20%20%20%20Description%20%20%20%20%20%20%20%20%20%20%3D%20'SharePoint%20Farm%20Service%20Account'%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'OU%3DService%20Accounts%2COU%3DSharePoint%2CDC%3Ddomain%2CDC%3Dcom'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20ADGroup%20'ExampleGroup'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20GroupName%20%20%20%3D%20'SPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20GroupScope%20%20%3D%20'Global'%0A%20%20%20%20%20%20%20%20%20%20%20%20Category%20%20%20%20%3D%20'Security'%0A%20%20%20%20%20%20%20%20%20%20%20%20Description%20%3D%20'SharePoint%20Administrators'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Import%20SSL%20certificate%20using%20CertificateDsc%0A%20%20%20%20%20%20%20%20PfxImport%20'ImportSSLCertificate'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thumbprint%20%3D%20'%3CTHUMBPRINT%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%3D%20'C%3A%5CCert%5Csslcert.pfx'%0A%20%20%20%20%20%20%20%20%20%20%20%20Location%20%20%20%3D%20'LocalMachine'%0A%20%20%20%20%20%20%20%20%20%20%20%20Store%20%20%20%20%20%20%3D%20'My'%0A%20%20%20%20%20%20%20%20%20%20%20%20Credential%20%3D%20%24CertificatePassword%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20Secure%20Channel%20settings%20using%20SChannelDsc%0A%20%20%20%20%20%20%20%20Protocol%20'DisableSSLv2'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Protocol%20%20%20%20%20%20%20%20%20%20%3D%20%22SSL%202.0%22%0A%20%20%20%20%20%20%20%20%20%20%20%20IncludeClientSide%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20State%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Disabled%22%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20Protocol%20'DisableSSLv3'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Protocol%20%20%20%20%20%20%20%20%20%20%3D%20%22SSL%203.0%22%0A%20%20%20%20%20%20%20%20%20%20%20%20IncludeClientSide%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20State%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Disabled%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20Protocol%20'DisableTLSv1'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Protocol%20%20%20%20%20%20%20%20%20%20%3D%20%22TLS%201.0%22%0A%20%20%20%20%20%20%20%20%20%20%20%20IncludeClientSide%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20State%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Disabled%22%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20Protocol%20'DisableTLSv11'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Protocol%20%20%20%20%20%20%20%20%20%20%3D%20%22TLS%201.1%22%0A%20%20%20%20%20%20%20%20%20%20%20%20IncludeClientSide%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20State%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Disabled%22%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20Protocol%20'EnableTLSv12'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Protocol%20%20%20%20%20%20%20%20%20%20%3D%20%22TLS%201.2%22%0A%20%20%20%20%20%20%20%20%20%20%20%20IncludeClientSide%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20State%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Enabled%22%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SChannelSettings%20'ConfigureSChannel'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20IsSingleInstance%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Yes'%0A%20%20%20%20%20%20%20%20%20%20%20%20TLS12State%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Enabled'%0A%20%20%20%20%20%20%20%20%20%20%20%20EnableFIPSAlgorithmPolicy%20%20%20%20%20%3D%20%24false%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20CipherSuites%20ConfigureCipherSuites%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20IsSingleInstance%20%20%3D%20'Yes'%0A%20%20%20%20%20%20%20%20%20%20%20%20CipherSuitesOrder%20%3D%20%40('TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'%2C'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'%2C'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'%2C'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'%2C'TLS_DHE_RSA_WITH_AES_256_GCM_SHA384'%2C'TLS_DHE_RSA_WITH_AES_128_GCM_SHA256'%2C'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384'%2C'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'%2C'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'%2C'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'%2C'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'%2C'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'%2C'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'%2C'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'%2C'TLS_DHE_RSA_WITH_AES_256_CBC_SHA'%2C'TLS_DHE_RSA_WITH_AES_128_CBC_SHA'%2C'TLS_RSA_WITH_AES_256_GCM_SHA384'%2C'TLS_RSA_WITH_AES_128_GCM_SHA256'%2C'TLS_RSA_WITH_AES_256_CBC_SHA256'%2C'TLS_RSA_WITH_AES_128_CBC_SHA256'%2C'TLS_RSA_WITH_AES_256_CBC_SHA'%2C'TLS_RSA_WITH_AES_128_CBC_SHA'%2C'TLS_RSA_WITH_3DES_EDE_CBC_SHA'%2C'TLS_DHE_DSS_WITH_AES_256_CBC_SHA256'%2C'TLS_DHE_DSS_WITH_AES_128_CBC_SHA256'%2C'TLS_DHE_DSS_WITH_AES_256_CBC_SHA'%2C'TLS_DHE_DSS_WITH_AES_128_CBC_SHA'%2C'TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA'%2C'TLS_PSK_WITH_AES_256_GCM_SHA384'%2C'TLS_PSK_WITH_AES_128_GCM_SHA256'%2C'TLS_PSK_WITH_AES_256_CBC_SHA384'%2C'TLS_PSK_WITH_AES_128_CBC_SHA256''TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'%2C'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'%2C'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'%2C'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'%2C'TLS_DHE_RSA_WITH_AES_256_GCM_SHA384'%2C'TLS_DHE_RSA_WITH_AES_128_GCM_SHA256'%2C'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384'%2C'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'%2C'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'%2C'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'%2C'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'%2C'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'%2C'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'%2C'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'%2C'TLS_DHE_RSA_WITH_AES_256_CBC_SHA'%2C'TLS_DHE_RSA_WITH_AES_128_CBC_SHA'%2C'TLS_RSA_WITH_AES_256_GCM_SHA384'%2C'TLS_RSA_WITH_AES_128_GCM_SHA256'%2C'TLS_RSA_WITH_AES_256_CBC_SHA256'%2C'TLS_RSA_WITH_AES_128_CBC_SHA256'%2C'TLS_RSA_WITH_AES_256_CBC_SHA'%2C'TLS_RSA_WITH_AES_128_CBC_SHA'%2C'TLS_RSA_WITH_3DES_EDE_CBC_SHA'%2C'TLS_DHE_DSS_WITH_AES_256_CBC_SHA256'%2C'TLS_DHE_DSS_WITH_AES_128_CBC_SHA256'%2C'TLS_DHE_DSS_WITH_AES_256_CBC_SHA'%2C'TLS_DHE_DSS_WITH_AES_128_CBC_SHA'%2C'TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA'%2C'TLS_PSK_WITH_AES_256_GCM_SHA384'%2C'TLS_PSK_WITH_AES_128_GCM_SHA256'%2C'TLS_PSK_WITH_AES_256_CBC_SHA384'%2C'TLS_PSK_WITH_AES_128_CBC_SHA256')%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Present%22%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20SSL%20on%20IIS%20website%20using%20xWebAdministration%0A%20%20%20%20%20%20%20%20xWebsite%20%22Website%22%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SharePoint%20Central%20Administration%20v4'%0A%20%20%20%20%20%20%20%20%20%20%20%20ApplicationPool%20%3D%20'SharePoint%20Central%20Administration%20v4'%0A%20%20%20%20%20%20%20%20%20%20%20%20BindingInfo%20%20%20%20%20%3D%20%40(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20MSFT_xWebBindingInformation%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Protocol%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'HTTPS'%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Port%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'443'%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CertificateThumbprint%20%3D%20'%3CTHUMBPRINT%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CertificateStoreName%20%20%3D%20'My'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20IPAddress%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'*'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Hostname%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'centraladmin.domain.com'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20SQL%20to%20grant%20SPAdmins%20AD%20group%20access%20to%20databases%20using%20SQLServerDsc%0A%20%20%20%20%20%20%20%20SqlServerLogin%20'AddSPAdminsGroupLoginToInstance_Infra'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20LoginType%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'WindowsGroup'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabaseUser%20'Config_AddSPAdminGroup'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20DatabaseName%20%20%20%20%20%20%20%20%20%3D%20'SharePoint_Config'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20UserType%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Login'%0A%20%20%20%20%20%20%20%20%20%20%20%20LoginName%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabaseRole%20'Config_ConfigureInstallAccountDBOwner'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Database%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SharePoint_Config'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'db_owner'%0A%20%20%20%20%20%20%20%20%20%20%20%20MembersToInclude%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabaseUser%20'AdminContent_AddSPAdminGroup'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20DatabaseName%20%20%20%20%20%20%20%20%20%3D%20'SharePoint_AdminContent'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20UserType%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Login'%0A%20%20%20%20%20%20%20%20%20%20%20%20LoginName%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabaseRole%20'AdminContent_ConfigureInstallAccountDBOwner'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Database%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SharePoint_AdminContent'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'db_owner'%0A%20%20%20%20%20%20%20%20%20%20%20%20MembersToInclude%20%20%20%20%20%3D%20'DOMAIN%5CSPAdmins'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Install%20and%20configure%20Workflow%20Manager%20using%20WorkflowManagerDsc%0A%20%20%20%20%20%20%20%20WorkflowManagerInstall%20'WFInstall'%0A%20%20%20%20%20%20%20%20%7B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Present%22%0A%20%20%20%20%20%20%20%20%20%20%20%20WebPIPath%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5CWorkflow%5Cbin%5CWebpiCmd.exe'%0A%20%20%20%20%20%20%20%20%20%20%20%20XMLFeedPath%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5CWorkflow%5Cfeeds%5Clatest%5Cwebproductlist.xml'%0A%20%20%20%20%20%20%20%20%20%20%20%20ComponentsToInstall%20%20%3D%20%22All%22%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20WorkflowManagerFarm%20'WFFarmConfig'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22Present%22%0A%20%20%20%20%20%20%20%20%20%20%20%20DatabaseServer%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20CertAutoGenerationKey%20%20%20%20%20%20%20%20%3D%20%24WMRunAsCredential%0A%20%20%20%20%20%20%20%20%20%20%20%20RunAsAccount%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%24WMRunAsCredential%0A%20%20%20%20%20%20%20%20%20%20%20%20ServiceBusFarmDB%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22SB_Management%22%0A%20%20%20%20%20%20%20%20%20%20%20%20ServiceBusGatewayDB%20%20%20%20%20%20%20%20%20%20%3D%20%22SB_Gateway%22%0A%20%20%20%20%20%20%20%20%20%20%20%20ServiceBusMessageContainerDB%20%3D%20%22SB_MessageContainer%22%0A%20%20%20%20%20%20%20%20%20%20%20%20WorkflowManagerFarmDB%20%20%20%20%20%20%20%20%3D%20%22WF_Management%22%0A%20%20%20%20%20%20%20%20%20%20%20%20WorkflowManagerInstanceDB%20%20%20%20%3D%20%22WF_Instance%22%0A%20%20%20%20%20%20%20%20%20%20%20%20WorkflowManagerResourceDB%20%20%20%20%3D%20%22WF_Resource%22%0A%20%20%20%20%20%20%20%20%20%20%20%20EnableFirewallRules%20%20%20%20%20%20%20%20%20%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%20%20%20%20%20%20%20%20%3D%20%24WMRunAsCredential%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20database%20compatibility%20level%20for%20WM%20databases%20using%20SQLServerDsc%20(minimal%20v13.4)%0A%20%20%20%20%20%20%20%20SqlDatabase%20'DatabaseCompatLevel_SBManagement'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20%24instanceInfra%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SB_Management'%0A%20%20%20%20%20%20%20%20%20%20%20%20CompatibilityLevel%20%20%20%3D%20'Version120'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabase%20'DatabaseCompatLevel_SBGateway'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SB_Gateway'%0A%20%20%20%20%20%20%20%20%20%20%20%20CompatibilityLevel%20%20%20%3D%20'Version120'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabase%20'DatabaseCompatLevel_SBMessageContainer'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'SB_MessageContainer'%0A%20%20%20%20%20%20%20%20%20%20%20%20CompatibilityLevel%20%20%20%3D%20'Version120'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabase%20'DatabaseCompatLevel_WFManagement'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'WF_Management'%0A%20%20%20%20%20%20%20%20%20%20%20%20CompatibilityLevel%20%20%20%3D%20'Version120'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabase%20'DatabaseCompatLevel_WFInstance'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'WF_Instance'%0A%20%20%20%20%20%20%20%20%20%20%20%20CompatibilityLevel%20%20%20%3D%20'Version120'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20SqlDatabase%20'DatabaseCompatLevel_WFResource'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20ServerName%20%20%20%20%20%20%20%20%20%20%20%3D%20'SQL01'%0A%20%20%20%20%20%20%20%20%20%20%20%20InstanceName%20%20%20%20%20%20%20%20%20%3D%20'MSSQLSERVER'%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'WF_Resource'%0A%20%20%20%20%20%20%20%20%20%20%20%20CompatibilityLevel%20%20%20%3D%20'Version120'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Disable%20Schedule%20Task%20using%20ComputerManagementDsc%0A%20%20%20%20%20%20%20%20ScheduledTask%20'DisableWFSchedTask'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TaskName%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Workflow%20Manager%201.0%20CEIP%20Uploader%20Task'%0A%20%20%20%20%20%20%20%20%20%20%20%20TaskPath%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'%5CMicrosoft%5CWindows%5CPowerShell%5CScheduledJobs'%0A%20%20%20%20%20%20%20%20%20%20%20%20Enable%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%24false%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20IIS%20using%20xWebAdministration%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet2Pool'%20%20%20%20%20%20%20%20%20%7B%20Name%20%3D%20'.NET%20v2.0'%3B%20%20%20%20%20%20%20%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet2ClassicPool'%20%20%7B%20Name%20%3D%20'.NET%20v2.0%20Classic'%3B%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet45Pool'%20%20%20%20%20%20%20%20%7B%20Name%20%3D%20'.NET%20v4.5'%3B%20%20%20%20%20%20%20%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet45ClassicPool'%20%7B%20Name%20%3D%20'.NET%20v4.5%20Classic'%3B%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableClassicDotNetPool'%20%20%20%7B%20Name%20%3D%20'Classic%20.NET%20AppPool'%3B%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDefaultAppPool'%20%20%20%20%20%20%7B%20Name%20%3D%20'DefaultAppPool'%3B%20%20%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebSite%20%20%20%20'DisableDefaultWebSite'%20%20%20%20%20%20%7B%20Name%20%3D%20'Default%20Web%20Site'%3B%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%0A%20%20%20%20%20%20%20%20xIisLogging%20'ConfigureIISLogging'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20LogPath%20%3D%20'D%3A%5CLogs%5CIIS'%0A%20%20%20%20%20%20%20%20%20%20%20%20Logflags%20%3D%20%40('Date'%2C'Time'%2C'ServerIP'%2C'Method'%2C'UriStem'%2C'UriQuery'%2C'ServerPort'%2C'UserName'%2C'ClientIP'%2C'UserAgent'%2C'Referer'%2C'HttpStatus'%2C'HttpSubStatus'%2C'Win32Status'%2C'TimeTaken')%0A%20%20%20%20%20%20%20%20%20%20%20%20LoglocalTimeRollover%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20LogPeriod%20%3D%20'Daily'%0A%20%20%20%20%20%20%20%20%20%20%20%20LogFormat%20%3D%20'W3C'%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20node%20'OOS1'%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%23%20Import%20SSL%20certificate%20using%20CertificateDsc%0A%20%20%20%20%20%20%20%20PfxImport%20'ImportSSLCertificate'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Thumbprint%20%3D%20'%3CTHUMBPRINT%3E'%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%3D%20'C%3A%5CCert%5Csslcert.pfx'%0A%20%20%20%20%20%20%20%20%20%20%20%20Location%20%20%20%3D%20'LocalMachine'%0A%20%20%20%20%20%20%20%20%20%20%20%20Store%20%20%20%20%20%20%3D%20'My'%0A%20%20%20%20%20%20%20%20%20%20%20%20Credential%20%3D%20%24CertificatePassword%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20These%20features%20are%20required%20for%20OOS%20on%20Windows%20Server%202016%0A%20%20%20%20%20%20%20%20%24requiredFeatures%20%3D%20%40(%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Server'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Mgmt-Tools'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Mgmt-Console'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-WebServer'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Common-Http'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Default-Doc'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Static-Content'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Performance'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Stat-Compression'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Dyn-Compression'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Security'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Filtering'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Windows-Auth'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-App-Dev'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Net-Ext45'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Asp-Net45'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-ISAPI-Ext'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-ISAPI-Filter'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Web-Includes'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-Framework-Features'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-Framework-45-Features'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-Framework-Core'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-Framework-45-Core'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-HTTP-Activation'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-Non-HTTP-Activ'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'NET-WCF-HTTP-Activation45'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Windows-Identity-Foundation'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'Server-Media-Foundation'%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20%20%20%20%20foreach%20(%24feature%20in%20%24requiredFeatures)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20WindowsFeature%20%22WindowsFeature_%24feature%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%3D%20%24feature%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%24prereqDependencies%20%3D%20%24RequiredFeatures%20%7C%20ForEach-Object%20-Process%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%5BWindowsFeature%5DWindowsFeature_%24_%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Install%20Office%20Online%20Server%20prerequisites%20using%20PSDesiredStateConfiguration%0A%20%20%20%20%20%20%20%20Package%20'Install_VC2013ReDistx64'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Microsoft%20Visual%20C%2B%2B%202013%20Redistributable%20(x64)'%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5CPrereqs%5Cvcredist_x64.exe'%0A%20%20%20%20%20%20%20%20%20%20%20%20Arguments%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'%2Fquiet%20%2Fnorestart'%0A%20%20%20%20%20%20%20%20%20%20%20%20ProductId%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'042d26ef-3dbe-4c25-95d3-4c1b11b235a7'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20Package%20'Install_VC2017ReDistx64'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Microsoft%20Visual%20C%2B%2B%202015-2019%20Redistributable%20(x64)%20-%2014.24.28127'%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5CPrereqs%5Cvc_redist.x64.exe'%0A%20%20%20%20%20%20%20%20%20%20%20%20Arguments%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'%2Fquiet%20%2Fnorestart'%0A%20%20%20%20%20%20%20%20%20%20%20%20ProductId%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'282975d8-55fe-4991-bbbb-06a72581ce58'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20Package%20'Install_MicrosoftIdentityExtensions'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Name%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Microsoft%20Identity%20Extensions'%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5CPrereqs%5CMicrosoftIdentityExtensions-64.msi'%0A%20%20%20%20%20%20%20%20%20%20%20%20Arguments%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'%2Fquiet'%0A%20%20%20%20%20%20%20%20%20%20%20%20ProductId%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'f99f24bf-0b90-463e-9658-3fd2efc3c992'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Install%20and%20configure%20OOS%20using%20OfficeOnlineServerDsc%0A%20%20%20%20%20%20%20%20OfficeOnlineServerInstall%20'Install_OOS_Binaries'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5COOS%5Csetup.exe'%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20OfficeOnlineServerInstallLanguagePack%20'Install_OOS_NL_LanguagePack'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20BinaryDir%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5COOS%5CLanguagePackNL'%0A%20%20%20%20%20%20%20%20%20%20%20%20Language%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'nl-nl'%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20OfficeOnlineServerProductUpdate%20'Update_OOS_Installation'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Ensure%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'Present'%0A%20%20%20%20%20%20%20%20%20%20%20%20SetupFile%20%20%20%20%20%20%20%20%20%20%20%20%3D%20'C%3A%5CInstall%5COOS%5CCU%5Coos_cu.exe'%0A%20%20%20%20%20%20%20%20%20%20%20%20Servers%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22OOS1%22%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20OfficeOnlineServerFarm%20'Create_OOS_Farm'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20InternalURL%20%20%20%20%20%20%20%20%20%20%3D%20'https%3A%2F%2Foos.domain.com'%0A%20%20%20%20%20%20%20%20%20%20%20%20EditingEnabled%20%20%20%20%20%20%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20CertificateName%20%20%20%20%20%20%3D%20'SSLCertificate'%0A%20%20%20%20%20%20%20%20%20%20%20%20AllowCEIP%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%24false%0A%20%20%20%20%20%20%20%20%20%20%20%20LogLocation%20%20%20%20%20%20%20%20%20%20%3D%20'D%3A%5CLogs%5COOS'%0A%20%20%20%20%20%20%20%20%20%20%20%20LogRetentionInDays%20%20%20%3D%2030%0A%20%20%20%20%20%20%20%20%20%20%20%20CacheLocation%20%20%20%20%20%20%20%20%3D%20'C%3A%5COOS%5CCache'%0A%20%20%20%20%20%20%20%20%20%20%20%20CacheSizeInGB%20%20%20%20%20%20%20%20%3D%201%0A%20%20%20%20%20%20%20%20%20%20%20%20PsDscRunAsCredential%20%3D%20%24InstallAccount%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Configure%20IIS%20using%20xWebAdministration%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet2Pool'%20%20%20%20%20%20%20%20%20%7B%20Name%20%3D%20'.NET%20v2.0'%3B%20%20%20%20%20%20%20%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet2ClassicPool'%20%20%7B%20Name%20%3D%20'.NET%20v2.0%20Classic'%3B%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet45Pool'%20%20%20%20%20%20%20%20%7B%20Name%20%3D%20'.NET%20v4.5'%3B%20%20%20%20%20%20%20%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDotNet45ClassicPool'%20%7B%20Name%20%3D%20'.NET%20v4.5%20Classic'%3B%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableClassicDotNetPool'%20%20%20%7B%20Name%20%3D%20'Classic%20.NET%20AppPool'%3B%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebAppPool%20'DisableDefaultAppPool'%20%20%20%20%20%20%7B%20Name%20%3D%20'DefaultAppPool'%3B%20%20%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%20%20%20%20%20%20%20%20xWebSite%20%20%20%20'DisableDefaultWebSite'%20%20%20%20%20%20%7B%20Name%20%3D%20'Default%20Web%20Site'%3B%20%20%20%20%20State%20%3D%20'Stopped'%3B%20DependsOn%20%3D%20'%5BSPInstallPrereqs%5DInstall_SP_Prereqs'%20%7D%0A%0A%20%20%20%20%20%20%20%20xIisLogging%20'ConfigureIISLogging'%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20LogPath%20%3D%20'D%3A%5CLogs%5CIIS'%0A%20%20%20%20%20%20%20%20%20%20%20%20Logflags%20%3D%20%40('Date'%2C'Time'%2C'ServerIP'%2C'Method'%2C'UriStem'%2C'UriQuery'%2C'ServerPort'%2C'UserName'%2C'ClientIP'%2C'UserAgent'%2C'Referer'%2C'HttpStatus'%2C'HttpSubStatus'%2C'Win32Status'%2C'TimeTaken')%0A%20%20%20%20%20%20%20%20%20%20%20%20LoglocalTimeRollover%20%3D%20%24true%0A%20%20%20%20%20%20%20%20%20%20%20%20LogPeriod%20%3D%20'Daily'%0A%20%20%20%20%20%20%20%20%20%20%20%20LogFormat%20%3D%20'W3C'%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3C%2FTHUMBPRINT%3E%3C%2FTHUMBPRINT%3E%3C%2FTHUMBPRINT%3E%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-1287760%22%20slang%3D%22en-US%22%3E%3CP%3EWhen%20using%20Desired%20State%20Configuration%20to%20install%20SharePoint%2C%20you%20probably%20do%20not%20want%20to%20only%20configure%20SharePoint.%20This%20article%20explains%20a%20little%20more%20about%20other%20useful%20DSC%20modules.%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1287760%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3ETutorial%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

When I create Desired State Configuration configurations, SharePointDsc usually is just one of the DSC modules I am using in my configuration. There are several other modules that are very useful when deploying or managing SharePoint environments.

 

Resource Description
ActiveDirectoryDsc Resources to manage Active Directory components. For example used to create service accounts or SharePoint administrators domain group.
CertificateDsc Resources to manage Certificates. For example used to import SSL certificates into the local certificate store.
ComputerManagementDsc Resources to manage various Windows components. For example used to manage Scheduled Tasks or trigger reboots.
OfficeOnlineServerDsc Resources to install and manage Office Online Server. Office Online Server is often used alongside SharePoint. Using this module you can install and configure OOS in an automated way.
SChannelDsc Resources to manage Secure Channel components. For example used to configure allowed cipher suites or protocols like disabling SSLv3 and TLS v1.0/v1.1.
SQLServerDsc Resources to install and manage SQL Server. SQL Server is required to run SharePoint, but does require certain settings, like the MaxDOP setting and the database compatibility level. Using this module, you can configure SQL Server in an optimal way for SharePoint.
WorkflowManagerDsc Resources to install and configure Workflow Manager. When using SharePoint 2013 workflows, you need the Workflow Manager to be deployed onto your SharePoint servers. This module is able to deploy Workflow Manager in an automated way.
xCredSSP Resources to manage CredSSP authentication settings. For example used to enable CredSSP, which is required to use SharePointDsc when using PowerShell v4.0 or with specific SharePointDsc resources.
xWebAdministration Resources to manage Internet Information Server (IIS) components. For example used to disable the default web site/application pools or configure logging settings.

 

The below configuration is showing an example which is using all of the above resources to configure a server with everything except SharePoint. You can use this as a starting point for your own configuration.

 

Configuration DeploySharePoint
{  
    param
    (
        [Parameter(Mandatory = $true)] [ValidateNotNullorEmpty()] [PSCredential] $InstallAccount,
        [Parameter(Mandatory = $true)] [ValidateNotNullorEmpty()] [PSCredential] $WMRunAsCredential,
        [Parameter(Mandatory = $true)] [ValidateNotNullorEmpty()] [PSCredential] $CertificatePassword
    )
    
    Import-DscResource -ModuleName ActiveDirectoryDsc
    Import-DscResource -ModuleName CertificateDsc
    Import-DscResource -ModuleName ComputerManagementDsc
    Import-DscResource -ModuleName OfficeOnlineServerDsc
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName SChannelDsc
    Import-DscResource -ModuleName SharePointDsc
    Import-DscResource -ModuleName SQLServerDsc
    Import-DscResource -ModuleName xWebAdministration
    Import-DscResource -ModuleName xCredSSP
    Import-DscResource -ModuleName WorkflowManagerDsc

    node SP01
    {
        # Configure CredSSP settings using xCredSSP
        xCredSSP 'Server'
        {
            Ensure = 'Present'
            Role   = 'Server'
        }
        
        xCredSSP 'Client'
        {
            Ensure = 'Present'
            Role   = 'Client'
            DelegateComputers = @("SP01","SP01.domain.com")
        }

        # Configure service account and admin group using ActiveDirectoryDsc
        ADUser 'SP_Farm'
        {
            DomainName           = 'DOMAIN'
            UserName             = 'sp_farm'
            UserPrincipalName    = 'sp_farm@domain.com'
            Password             = $InstallAccount
            DisplayName          = 'SharePoint Farm Service Account'
            Description          = 'SharePoint Farm Service Account'
            Path                 = 'OU=Service Accounts,OU=SharePoint,DC=domain,DC=com'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        ADGroup 'ExampleGroup'
        {
            GroupName   = 'SPAdmins'
            GroupScope  = 'Global'
            Category    = 'Security'
            Description = 'SharePoint Administrators'
            Ensure      = 'Present'
        }

        # Import SSL certificate using CertificateDsc
        PfxImport 'ImportSSLCertificate'
        {
            Thumbprint = '<thumbprint>'
            Path       = 'C:\Cert\sslcert.pfx'
            Location   = 'LocalMachine'
            Store      = 'My'
            Credential = $CertificatePassword
        }

        # Configure Secure Channel settings using SChannelDsc
        Protocol 'DisableSSLv2'
        {
            Protocol          = "SSL 2.0"
            IncludeClientSide = $true
            State             = "Disabled"
        }

        Protocol 'DisableSSLv3'
        {
            Protocol          = "SSL 3.0"
            IncludeClientSide = $true
            State             = "Disabled"
        }
            
        Protocol 'DisableTLSv1'
        {
            Protocol          = "TLS 1.0"
            IncludeClientSide = $true
            State             = "Disabled"
        }

        Protocol 'DisableTLSv11'
        {
            Protocol          = "TLS 1.1"
            IncludeClientSide = $true
            State             = "Disabled"
        }

        Protocol 'EnableTLSv12'
        {
            Protocol          = "TLS 1.2"
            IncludeClientSide = $true
            State             = "Enabled"
        }

        SChannelSettings 'ConfigureSChannel'
        {
            IsSingleInstance              = 'Yes'
            TLS12State                    = 'Enabled'
            EnableFIPSAlgorithmPolicy     = $false
        }

        CipherSuites ConfigureCipherSuites
        {
            IsSingleInstance  = 'Yes'
            CipherSuitesOrder = @('TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256','TLS_DHE_RSA_WITH_AES_256_GCM_SHA384','TLS_DHE_RSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384','TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256','TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384','TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256','TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA','TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA','TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA','TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA','TLS_DHE_RSA_WITH_AES_256_CBC_SHA','TLS_DHE_RSA_WITH_AES_128_CBC_SHA','TLS_RSA_WITH_AES_256_GCM_SHA384','TLS_RSA_WITH_AES_128_GCM_SHA256','TLS_RSA_WITH_AES_256_CBC_SHA256','TLS_RSA_WITH_AES_128_CBC_SHA256','TLS_RSA_WITH_AES_256_CBC_SHA','TLS_RSA_WITH_AES_128_CBC_SHA','TLS_RSA_WITH_3DES_EDE_CBC_SHA','TLS_DHE_DSS_WITH_AES_256_CBC_SHA256','TLS_DHE_DSS_WITH_AES_128_CBC_SHA256','TLS_DHE_DSS_WITH_AES_256_CBC_SHA','TLS_DHE_DSS_WITH_AES_128_CBC_SHA','TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA','TLS_PSK_WITH_AES_256_GCM_SHA384','TLS_PSK_WITH_AES_128_GCM_SHA256','TLS_PSK_WITH_AES_256_CBC_SHA384','TLS_PSK_WITH_AES_128_CBC_SHA256''TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256','TLS_DHE_RSA_WITH_AES_256_GCM_SHA384','TLS_DHE_RSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384','TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256','TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384','TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256','TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA','TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA','TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA','TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA','TLS_DHE_RSA_WITH_AES_256_CBC_SHA','TLS_DHE_RSA_WITH_AES_128_CBC_SHA','TLS_RSA_WITH_AES_256_GCM_SHA384','TLS_RSA_WITH_AES_128_GCM_SHA256','TLS_RSA_WITH_AES_256_CBC_SHA256','TLS_RSA_WITH_AES_128_CBC_SHA256','TLS_RSA_WITH_AES_256_CBC_SHA','TLS_RSA_WITH_AES_128_CBC_SHA','TLS_RSA_WITH_3DES_EDE_CBC_SHA','TLS_DHE_DSS_WITH_AES_256_CBC_SHA256','TLS_DHE_DSS_WITH_AES_128_CBC_SHA256','TLS_DHE_DSS_WITH_AES_256_CBC_SHA','TLS_DHE_DSS_WITH_AES_128_CBC_SHA','TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA','TLS_PSK_WITH_AES_256_GCM_SHA384','TLS_PSK_WITH_AES_128_GCM_SHA256','TLS_PSK_WITH_AES_256_CBC_SHA384','TLS_PSK_WITH_AES_128_CBC_SHA256')
            Ensure            = "Present"
        }

        # Configure SSL on IIS website using xWebAdministration
        xWebsite "Website"
        {
            Name            = 'SharePoint Central Administration v4'
            ApplicationPool = 'SharePoint Central Administration v4'
            BindingInfo     = @(
                MSFT_xWebBindingInformation 
                {
                    Protocol              = 'HTTPS' 
                    Port                  = '443' 
                    CertificateThumbprint = '<thumbprint>'
                    CertificateStoreName  = 'My'
                    IPAddress             = '*'
                    Hostname              = 'centraladmin.domain.com'
                }
            )
        }

        # Configure SQL to grant SPAdmins AD group access to databases using SQLServerDsc
        SqlServerLogin 'AddSPAdminsGroupLoginToInstance_Infra'
        {
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Name                 = 'DOMAIN\SPAdmins'
            LoginType            = 'WindowsGroup'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabaseUser 'Config_AddSPAdminGroup'
        {
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            DatabaseName         = 'SharePoint_Config'
            Name                 = 'DOMAIN\SPAdmins'
            UserType             = 'Login'
            LoginName            = 'DOMAIN\SPAdmins'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabaseRole 'Config_ConfigureInstallAccountDBOwner'
        {
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Database             = 'SharePoint_Config'
            Name                 = 'db_owner'
            MembersToInclude     = 'DOMAIN\SPAdmins'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabaseUser 'AdminContent_AddSPAdminGroup'
        {
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            DatabaseName         = 'SharePoint_AdminContent'
            Name                 = 'DOMAIN\SPAdmins'
            UserType             = 'Login'
            LoginName            = 'DOMAIN\SPAdmins'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabaseRole 'AdminContent_ConfigureInstallAccountDBOwner'
        {
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Database             = 'SharePoint_AdminContent'
            Name                 = 'db_owner'
            MembersToInclude     = 'DOMAIN\SPAdmins'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        # Install and configure Workflow Manager using WorkflowManagerDsc
        WorkflowManagerInstall 'WFInstall'
        {  
            Ensure               = "Present"
            WebPIPath            = 'C:\Install\Workflow\bin\WebpiCmd.exe'
            XMLFeedPath          = 'C:\Install\Workflow\feeds\latest\webproductlist.xml'
            ComponentsToInstall  = "All"
            PsDscRunAsCredential = $InstallAccount
        }

        WorkflowManagerFarm 'WFFarmConfig'
        {
            Ensure                       = "Present"
            DatabaseServer               = 'SQL01'
            CertAutoGenerationKey        = $WMRunAsCredential
            RunAsAccount                 = $WMRunAsCredential
            ServiceBusFarmDB             = "SB_Management"
            ServiceBusGatewayDB          = "SB_Gateway"
            ServiceBusMessageContainerDB = "SB_MessageContainer"
            WorkflowManagerFarmDB        = "WF_Management"
            WorkflowManagerInstanceDB    = "WF_Instance"
            WorkflowManagerResourceDB    = "WF_Resource"
            EnableFirewallRules          = $true
            PsDscRunAsCredential         = $WMRunAsCredential
        }

        # Configure database compatibility level for WM databases using SQLServerDsc (minimal v13.4)
        SqlDatabase 'DatabaseCompatLevel_SBManagement'
        {
            Ensure               = 'Present'
            ServerName           = 'SQL01'
            InstanceName         = $instanceInfra
            Name                 = 'SB_Management'
            CompatibilityLevel   = 'Version120'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabase 'DatabaseCompatLevel_SBGateway'
        {
            Ensure               = 'Present'
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Name                 = 'SB_Gateway'
            CompatibilityLevel   = 'Version120'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabase 'DatabaseCompatLevel_SBMessageContainer'
        {
            Ensure               = 'Present'
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Name                 = 'SB_MessageContainer'
            CompatibilityLevel   = 'Version120'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabase 'DatabaseCompatLevel_WFManagement'
        {
            Ensure               = 'Present'
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Name                 = 'WF_Management'
            CompatibilityLevel   = 'Version120'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabase 'DatabaseCompatLevel_WFInstance'
        {
            Ensure               = 'Present'
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Name                 = 'WF_Instance'
            CompatibilityLevel   = 'Version120'
            PsDscRunAsCredential = $InstallAccount
        }

        SqlDatabase 'DatabaseCompatLevel_WFResource'
        {
            Ensure               = 'Present'
            ServerName           = 'SQL01'
            InstanceName         = 'MSSQLSERVER'
            Name                 = 'WF_Resource'
            CompatibilityLevel   = 'Version120'
            PsDscRunAsCredential = $InstallAccount
        }

        # Disable Schedule Task using ComputerManagementDsc
        ScheduledTask 'DisableWFSchedTask'
        {
            TaskName             = 'Workflow Manager 1.0 CEIP Uploader Task'
            TaskPath             = '\Microsoft\Windows\PowerShell\ScheduledJobs'
            Enable               = $false
            PsDscRunAsCredential = $InstallAccount
        }

        # Configure IIS using xWebAdministration
        xWebAppPool 'DisableDotNet2Pool'         { Name = '.NET v2.0';            State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDotNet2ClassicPool'  { Name = '.NET v2.0 Classic';    State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDotNet45Pool'        { Name = '.NET v4.5';            State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDotNet45ClassicPool' { Name = '.NET v4.5 Classic';    State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableClassicDotNetPool'   { Name = 'Classic .NET AppPool'; State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDefaultAppPool'      { Name = 'DefaultAppPool';       State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebSite    'DisableDefaultWebSite'      { Name = 'Default Web Site';     State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }

        xIisLogging 'ConfigureIISLogging'
        {
            LogPath = 'D:\Logs\IIS'
            Logflags = @('Date','Time','ServerIP','Method','UriStem','UriQuery','ServerPort','UserName','ClientIP','UserAgent','Referer','HttpStatus','HttpSubStatus','Win32Status','TimeTaken')
            LoglocalTimeRollover = $true
            LogPeriod = 'Daily'
            LogFormat = 'W3C'
        }
    }

    node 'OOS1'
    {
        # Import SSL certificate using CertificateDsc
        PfxImport 'ImportSSLCertificate'
        {
            Thumbprint = '<thumbprint>'
            Path       = 'C:\Cert\sslcert.pfx'
            Location   = 'LocalMachine'
            Store      = 'My'
            Credential = $CertificatePassword
        }

        # These features are required for OOS on Windows Server 2016
        $requiredFeatures = @(
            'Web-Server',
            'Web-Mgmt-Tools',
            'Web-Mgmt-Console',
            'Web-WebServer',
            'Web-Common-Http',
            'Web-Default-Doc',
            'Web-Static-Content',
            'Web-Performance',
            'Web-Stat-Compression',
            'Web-Dyn-Compression',
            'Web-Security',
            'Web-Filtering',
            'Web-Windows-Auth',
            'Web-App-Dev',
            'Web-Net-Ext45',
            'Web-Asp-Net45',
            'Web-ISAPI-Ext',
            'Web-ISAPI-Filter',
            'Web-Includes',
            'NET-Framework-Features',
            'NET-Framework-45-Features',
            'NET-Framework-Core',
            'NET-Framework-45-Core',
            'NET-HTTP-Activation',
            'NET-Non-HTTP-Activ',
            'NET-WCF-HTTP-Activation45',
            'Windows-Identity-Foundation',
            'Server-Media-Foundation'
        )

        foreach ($feature in $requiredFeatures)
        {
            WindowsFeature "WindowsFeature_$feature"
            {
                Name      = $feature
                Ensure    = 'Present'
            }
        }

        $prereqDependencies = $RequiredFeatures | ForEach-Object -Process {
            return "[WindowsFeature]WindowsFeature_$_"
        }
    
        # Install Office Online Server prerequisites using PSDesiredStateConfiguration
        Package 'Install_VC2013ReDistx64'
        {
            Name                 = 'Microsoft Visual C++ 2013 Redistributable (x64)'
            Path                 = 'C:\Install\Prereqs\vcredist_x64.exe'
            Arguments            = '/quiet /norestart'
            ProductId            = '042d26ef-3dbe-4c25-95d3-4c1b11b235a7'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        Package 'Install_VC2017ReDistx64'
        {
            Name                 = 'Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.24.28127'
            Path                 = 'C:\Install\Prereqs\vc_redist.x64.exe'
            Arguments            = '/quiet /norestart'
            ProductId            = '282975d8-55fe-4991-bbbb-06a72581ce58'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        Package 'Install_MicrosoftIdentityExtensions'
        {
            Name                 = 'Microsoft Identity Extensions'
            Path                 = 'C:\Install\Prereqs\MicrosoftIdentityExtensions-64.msi'
            Arguments            = '/quiet'
            ProductId            = 'f99f24bf-0b90-463e-9658-3fd2efc3c992'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        # Install and configure OOS using OfficeOnlineServerDsc
        OfficeOnlineServerInstall 'Install_OOS_Binaries'
        {
            Path                 = 'C:\Install\OOS\setup.exe'
            Ensure               = 'Present'
            PsDscRunAsCredential = $InstallAccount
        }

        OfficeOnlineServerInstallLanguagePack 'Install_OOS_NL_LanguagePack'
        {
            Ensure               = 'Present'
            BinaryDir            = 'C:\Install\OOS\LanguagePackNL'
            Language             = 'nl-nl'
            PsDscRunAsCredential = $InstallAccount
        }

        OfficeOnlineServerProductUpdate 'Update_OOS_Installation'
        {
            Ensure               = 'Present'
            SetupFile            = 'C:\Install\OOS\CU\oos_cu.exe'
            Servers              = "OOS1"
            PsDscRunAsCredential = $InstallAccount
        }

        OfficeOnlineServerFarm 'Create_OOS_Farm'
        {
            InternalURL          = 'https://oos.domain.com'
            EditingEnabled       = $true
            CertificateName      = 'SSLCertificate'
            AllowCEIP            = $false
            LogLocation          = 'D:\Logs\OOS'
            LogRetentionInDays   = 30
            CacheLocation        = 'C:\OOS\Cache'
            CacheSizeInGB        = 1
            PsDscRunAsCredential = $InstallAccount
        }

        # Configure IIS using xWebAdministration
        xWebAppPool 'DisableDotNet2Pool'         { Name = '.NET v2.0';            State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDotNet2ClassicPool'  { Name = '.NET v2.0 Classic';    State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDotNet45Pool'        { Name = '.NET v4.5';            State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDotNet45ClassicPool' { Name = '.NET v4.5 Classic';    State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableClassicDotNetPool'   { Name = 'Classic .NET AppPool'; State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebAppPool 'DisableDefaultAppPool'      { Name = 'DefaultAppPool';       State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }
        xWebSite    'DisableDefaultWebSite'      { Name = 'Default Web Site';     State = 'Stopped'; DependsOn = '[SPInstallPrereqs]Install_SP_Prereqs' }

        xIisLogging 'ConfigureIISLogging'
        {
            LogPath = 'D:\Logs\IIS'
            Logflags = @('Date','Time','ServerIP','Method','UriStem','UriQuery','ServerPort','UserName','ClientIP','UserAgent','Referer','HttpStatus','HttpSubStatus','Win32Status','TimeTaken')
            LoglocalTimeRollover = $true
            LogPeriod = 'Daily'
            LogFormat = 'W3C'
        }
    }
}