Examples/EndToEndExample/7-ConfigurePrimaryDatabases.ps1
<#
.EXAMPLE This example shows how to configure primary databases. #> $ConfigurationData = @{ AllNodes = @( @{ #region Common Settings for All Nodes NodeName = '*' <# The location of the exported public certificate which will be used to encrypt credentials during compilation. CertificateFile = 'C:\public-certificate.cer' #> # Thumbprint of the certificate being used for decrypting credentials Thumbprint = '39bef4b2e82599233154465323ebf96a12b60673' # The paths to the CSV files generated by the Server Role Requirements Calculator ServersCsvPath = "$($PSScriptRoot)\Calculators\Lab\Servers.csv" MailboxDatabasesCsvPath = "$($PSScriptRoot)\Calculators\Lab\MailboxDatabases.csv" MailboxDatabaseCopiesCsvPath = "$($PSScriptRoot)\Calculators\Lab\MailboxDatabaseCopies.csv" #endregion } #region Individual Node Settings #region DAG01 Nodes @{ NodeName = 'e15-1' Fqdn = 'e15-1.contoso.local' Role = 'AdditionalDAGMember' DAGId = 'DAG01' CASId = 'Site1CAS' ServerNameInCsv = 'e15-1' } @{ NodeName = 'e15-2' Fqdn = 'e15-2.contoso.local' Role = 'AdditionalDAGMember' DAGId = 'DAG01' CASId = 'Site1CAS' ServerNameInCsv = 'e15-2' } @{ NodeName = 'e15-3' Fqdn = 'e15-3.contoso.local' Role = 'FirstDAGMember' DAGId = 'DAG01' CASId = 'Site2CAS' ServerNameInCsv = 'e15-3' } @{ NodeName = 'e15-4' Fqdn = 'e15-4.contoso.local' Role = 'AdditionalDAGMember' DAGId = 'DAG01' CASId = 'Site2CAS' ServerNameInCsv = 'e15-4' } #endregion ); #region DAG Settings DAG01 = @( @{ DAGName = 'DAG01' AutoDagTotalNumberOfServers = 12 AutoDagDatabaseCopiesPerVolume = 4 DatabaseAvailabilityGroupIPAddresses = '192.168.1.31', '192.168.2.31' WitnessServer = 'e14-1.contoso.local' DbNameReplacements = @{"nn" = "01"} Thumbprint = "0079D0F68F44C7DA5252B4779F872F46DFAF0CBC" } ) #endregion #region CAS Settings # Settings that will apply to all CAS AllCAS = @( @{ ExternalNamespace = 'mail.contoso.local' } ) # Settings that will apply only to Quincy CAS Site1CAS = @( @{ InternalNamespace = 'mail-site1.contoso.local' AutoDiscoverSiteScope = 'Site1' InstantMessagingServerName = 'l15-1.contoso.local' DefaultOAB = "Default Offline Address Book (Site1)" } ); # Settings that will apply only to Phoenix CAS Site2CAS = @( @{ InternalNamespace = 'mail-site2.contoso.local' AutoDiscoverSiteScope = 'Site2' InstantMessagingServerName = 'l15-2.contoso.local' DefaultOAB = "Default Offline Address Book (Site2)" } ); #endregion } Configuration Example { param ( [Parameter(Mandatory = $true)] [ValidateNotNullorEmpty()] [System.Management.Automation.PSCredential] $ExchangeAdminCredential ) Import-DscResource -Module xExchange Import-Module -Name (Join-Path -Path (Split-Path -Parent (Split-Path -Parent $PSScriptRoot)) -ChildPath 'Modules\xExchangeCalculatorHelper.psm1') # This section will handle configuring all non-DAG specific settings, including CAS and MBX settings. Node $AllNodes.NodeName { $dagSettings = $ConfigurationData[$Node.DAGId] # Get DAG settings for this node $casSettingsPerSite = $ConfigurationData[$Node.CASId] # Get site specific CAS settings for this node ###Mailbox Server settings### $dbMap = Get-DBMapFromServersCsv -ServersCsvPath $Node.ServersCsvPath ` -ServerNameInCsv $Node.ServerNameInCsv ` -DbNameReplacements $dagSettings.DbNameReplacements $primaryDbList = Get-DBListFromMailboxDatabasesCsv -MailboxDatabasesCsvPath $Node.MailboxDatabasesCsvPath ` -ServerNameInCsv $Node.ServerNameInCsv ` -DbNameReplacements $dagSettings.DbNameReplacements # Create all mount points on the server xExchAutoMountPoint AMP { Identity = $Node.NodeName AutoDagDatabasesRootFolderPath = 'C:\ExchangeDatabases' AutoDagVolumesRootFolderPath = 'C:\ExchangeVolumes' DiskToDBMap = $dbMap SpareVolumeCount = 1 VolumePrefix = 'EXVOL' } # Create primary databases foreach ($DB in $primaryDbList) { # Need to define a unique ID for each database $resourceId = "MDB_$($DB.Name)" xExchMailboxDatabase $resourceId { Name = $DB.Name Credential = $ExchangeAdminCredential EdbFilePath = $DB.DBFilePath LogFolderPath = $DB.LogFolderPath Server = $Node.NodeName CircularLoggingEnabled = $true DatabaseCopyCount = $dagSettings.AutoDagDatabaseCopiesPerVolume OfflineAddressBook = $casSettingsPerSite.DefaultOAB SkipInitialDatabaseMount = $true DependsOn = '[xExchAutoMountPoint]AMP' # Can't create databases until the mount points exist } } } } |