functions/Get-D365LBDEnvironmentHealth.ps1
function Get-D365LBDEnvironmentHealth { <# .SYNOPSIS Looks inside the agent share extracts the version from the zip by using the custom module name. Puts an xml in root for easy idenitification .DESCRIPTION Exports .EXAMPLE Get-D365LBDEnvironmentHealth .EXAMPLE Get-D365LBDEnvironmentHealth .PARAMETER AgentShare optional string The location of the Agent Share .PARAMETER CustomModuleName optional string The name of the custom module you will be using to capture the version number #> [alias("Get-D365EnvironmentHealth")] param ( [Parameter(Mandatory = $true)] [int]$Timeout ) BEGIN { } PROCESS { $AssemblyList = "Microsoft.SqlServer.Management.Common", "Microsoft.SqlServer.Smo", "Microsoft.SqlServer.Management.Smo" foreach ($Assembly in $AssemblyList) { $AssemblyLoad = [Reflection.Assembly]::LoadWithPartialName($Assembly) } $SQLSSRSServer = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $ReportServerServerName $SystemDatabasesWithIssues = 0 $SystemDatabasesAccessible = 0 foreach ($database in $SQLSSRSServer.Databases) { switch ($database) { { @("[model]", "[master]", "[msdb]", "[tempdb]") -contains $_ } { if ($database.IsAccessible) { $SystemDatabasesAccessible = $SystemDatabasesAccessible + 1 } else { $SystemDatabasesWithIssues = $SystemDatabasesWithIssues + 1 } } "[DynamicsAxReportServer]" { switch ($database.IsAccessible) { "True" { $dbstatus = "Online" } "False" { $dbstatus = "Offline" } } $Properties = @{'Object' = "SSRSDatabase" 'Details' = $database.name 'Status' = "$dbstatus" 'Source' = $ReportServerServerName } New-Object -TypeName psobject -Property $Properties } "[DynamicsAxReportServerTempDB]" { switch ($database.IsAccessible) { "True" { $dbstatus = "Online" } "False" { $dbstatus = "Offline" } } $Properties = @{'Object' = "SSRSTempDBDatabase" 'Details' = $database.name 'Status' = "$dbstatus" 'Source' = $ReportServerServerName } New-Object -TypeName psobject -Property $Properties } Default {} } } if ($SystemDatabasesWithIssues -eq 0) { $Properties = @{'Object' = "SSRSSystemDatabasesDatabase" 'Details' = "$SystemDatabasesAccessible databases are accessible" 'Status' = "Online" 'Source' = $ReportServerServerName } New-Object -TypeName psobject -Property $Properties } else { $Properties = @{'Object' = "SSRSSystemDatabasesDatabase" 'Details' = "$SystemDatabasesAccessible databases are accessible. $SystemDatabasesWithIssues are not accessible" 'Status' = "Offline" 'Source' = $ReportServerServerName } New-Object -TypeName psobject -Property $Properties } } END { } } |