Get DAG Database Distribution Function

PowerShell is great for repeatable administration shortcuts. I had created a script to a while ago that provided the mounted database distribution on each Database Availability Group server as part of a larger routine status reporting script. I found that this particular task of know the database distribution during the business day was helpful so I converted it to a function and included into my PowerShell profile. That way I could just run the Get-DagDbCount function without hunting around my various scripts directories trying find it and run it in script form.

It is really quite simple and makes use of an empty array populated with custom PSObjects with just server name and the number of mounted databases on it. Comments in the script should make everything clear on what is happening.

# Initialize function name.
Function Get-DagDbCount {
	# Return the status of all mailbox database copies.
	$DAGDbs = Get-MailboxDatabaseCopyStatus *
	# Return the DAG in the organization
	$Dag = Get-DatabaseAvailabilityGroup
	# Create empty array to hold DAG data.
	$DagTable = @()
	# Pipe the DAG members to a foreach-object loop to count mounted Dbs for each server. Then add
	#  results to array.
	$Dag.servers | foreach {
		$DagServerName = $_.Name
		$DagObject = New-Object PSObject
		$DagObject | Add-Member -type NoteProperty -Name "Server" -Value $DagServerName
		$DagObject | Add-Member -type NoteProperty -Name "MountedDbCount" `
		-Value (($DAGDbs | where {$_.mailboxserver -eq $DagServerName -and $_.status -eq "mounted"}) | measure).count
		$DagTable += $DagObject
	# Show results to screen.


1 thought on “Get DAG Database Distribution Function”

Leave a Comment