Skip to content

Commit

Permalink
Added More SQL Server Sections
Browse files Browse the repository at this point in the history
  • Loading branch information
rebelinux committed Feb 18, 2024
1 parent d853f7d commit 1ad3163
Show file tree
Hide file tree
Showing 9 changed files with 473 additions and 138 deletions.
4 changes: 3 additions & 1 deletion AsBuiltReport.Microsoft.Windows.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
"ShowHeaderFooter": true,
"ShowTableCaptions": true
},
"Options": {},
"Options": {
"Instance": "MSSQLSERVER"
},
"InfoLevel": {
"_comment_": "Please refer to the AsBuiltReport project contributing guide for information about how to define InfoLevels.",
"_comment_": "0 = Disabled, 1 = Enabled, 2 = Adv Summary, 3 = Detailed, 4 = Adv Detailed, 5 = Comprehensive",
Expand Down
11 changes: 10 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Add Initial SQL Server support
- Add SQL Server support
- General Information
- Security
- Login
- Roles
- Databases
- User
- System
- Server Objects
- Backup Devices

## [0.5.2] - 2024-02-18

Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,10 @@ The **Report** schema provides configuration of the Microsoft Windows report inf

The **Options** schema allows certain options within the report to be toggled on or off.

| Sub-Schema | Setting | Default | Description |
| ---------- | ------------------- | ----------- | ------------------------------------------ |
| Instance | SQL Server Instance | MSSQLSERVER | Set the sql server instance to connect to. |

### InfoLevel

The **InfoLevel** schema allows configuration of each section of the report at a granular level. The following sections can be set.
Expand Down
83 changes: 83 additions & 0 deletions Src/Private/Get-AbrWinSQLBackupDevice.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
function Get-AbrWinSQLBackupDevice {
<#
.SYNOPSIS
Used by As Built Report to retrieve Windows SQL Server backup device information.
.DESCRIPTION
Documents the configuration of Microsoft Windows Server in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.5.3
Author: Jonathan Colon
Twitter: @rebelinux
Github: AsBuiltReport
Credits: Iain Brighton (@iainbrighton) - PScribo module
.LINK
https://github.com/AsBuiltReport/AsBuiltReport.Microsoft.Windows
#>
[CmdletBinding()]
param (
)

begin {
Write-PScriboMessage "SQL Server Backup Device InfoLevel set at $($InfoLevel.SQLServer)."
}

process {
try {
Write-PScriboMessage "Collecting SQL Server Backup Device information."
$SQLBackUpDevices = Get-DbaBackupDevice -SqlInstance $SQLServer | Sort-Object -Property Name
if ($SQLBackUpDevices) {
Write-PScriboMessage "Collecting SQL Server Backup Device information."
Section -Style Heading4 'Backup Device' {
$ItemInfo = @()
foreach ($Item in $SQLBackUpDevices) {
try {
$InObj = [Ordered]@{
'Name' = $Item.Name
'Backup Device Type' = $Item.BackupDeviceType
'Physical Location' = $Item.PhysicalLocation
'Skip Tape Label' = ConvertTo-TextYN $Item.SkipTapeLabel
}
$ItemInfo += [PSCustomObject]$InObj
} catch {
Write-PScriboMessage -IsWarning "SQL Server System Backup Device Section: $($_.Exception.Message)"
}
}

if ($InfoLevel.SQLServer -ge 2) {
Paragraph "The following sections detail the configuration of the backup device $($SQLServer.Name)."
foreach ($Item in $ItemInfo) {
Section -Style NOTOCHeading5 -ExcludeFromTOC "$($Item.Name)" {
$TableParams = @{
Name = "Backup Device - $($Item.Name)"
List = $true
ColumnWidths = 50, 50
}
if ($Report.ShowTableCaptions) {
$TableParams['Caption'] = "- $($TableParams.Name)"
}
$Item | Table @TableParams
}
}
} else {
Paragraph "The following table summarises the configuration of the backup device within $($SQLServer.Name)."
BlankLine
$TableParams = @{
Name = "Backup Devices"
List = $false
Columns = 'Name', 'Backup Device Type', 'Physical Location'
ColumnWidths = 25, 25, 50
}
if ($Report.ShowTableCaptions) {
$TableParams['Caption'] = "- $($TableParams.Name)"
}
$ItemInfo | Table @TableParams
}
}
}
} catch {
Write-PScriboMessage -IsWarning "SQL Server Backup Device Section: $($_.Exception.Message)"
}
}
end {}
}
46 changes: 32 additions & 14 deletions Src/Private/Get-AbrWinSQLBuild.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
function Get-AbrWinSQLBuild {
<#
.SYNOPSIS
Used by As Built Report to retrieve Windows SQL Server build information.
Used by As Built Report to retrieve Windows SQL Server Properties information.
.DESCRIPTION
Documents the configuration of Microsoft Windows Server in Word/HTML/Text formats using PScribo.
.NOTES
Expand All @@ -21,32 +21,51 @@ function Get-AbrWinSQLBuild {

begin {
Write-PScriboMessage "SQL Server InfoLevel set at $($InfoLevel.SQLServer)."
Write-PscriboMessage "Collecting SQL Server build information."
Write-PScriboMessage "Collecting SQL Server Properties information."
}

process {
if ($InfoLevel.SQLServer -ge 1) {
try {
$Properties = Get-DbaInstanceProperty -SqlInstance $SQLServer | ForEach-Object { @{$_.Name = $_.Value } }
$Build = Get-DbaBuild -SqlInstance $SQLServer
if ($Build) {
Section -Style Heading3 'Build' {
Paragraph 'The following table details sql server build information'
Blankline
if ($Properties) {
Section -Style Heading3 'General Information' {
Paragraph 'The following table details sql server Properties information'
BlankLine
[array]$SQLServerObjt = @()
$TempSQLServerObjt = [PSCustomObject]@{
'Instance Name' = $Build.SqlInstance
'Build' = $Build.Build
'Level' = $Build.NameLevel
'Service Pack' = $Build.SPLevel
'Fully Qualified Net Name' = $Properties.FullyQualifiedNetName
'Supported Until' = $Build.SupportedUntil.ToShortDateString()
'Edition' = $Properties.Edition
'Level' = "Microsoft SQL Server $($Build.NameLevel)"
'Build' = $Properties.VersionString
'Service Pack' = $Properties.ProductLevel
'Comulative Update' = ConvertTo-EmptyToFiller $Build.CULevel
'KB Level' = $Build.KBLevel
'Supported Until' = $Build.SupportedUntil.ToShortDateString()
'Case Sensitive' = ConvertTo-TextYN $Properties.IsCaseSensitive
'Full Text Installed' = ConvertTo-TextYN $Properties.IsFullTextInstalled
'XTP Supported' = ConvertTo-TextYN $Properties.IsXTPSupported
'Clustered' = ConvertTo-TextYN $Properties.IsClustered
'Single User' = ConvertTo-TextYN $Properties.IsSingleUser
'Language' = $Properties.Language
'Collation' = $Properties.Collation
'Sql CharSet Name' = $Properties.SqlCharSetName
'Root Directory' = $Properties.RootDirectory
'Master DB Path' = $Properties.MasterDBPath
'Master DB Log Path' = $Properties.MasterDBLogPath
'Backup Directory' = $Properties.BackupDirectory
'Default File' = $Properties.DefaultFile
'Default Log' = $Properties.DefaultLog
'Login Mode' = $Properties.LoginMode
'Mail Profile' = ConvertTo-EmptyToFiller $Properties.MailProfile
'Warning' = ConvertTo-EmptyToFiller $Build.Warning
}
$SQLServerObjt += $TempSQLServerObjt

$TableParams = @{
Name = "SQL Server Build"
Name = "General Information"
List = $True
ColumnWidths = 40, 60
}
Expand All @@ -56,9 +75,8 @@ function Get-AbrWinSQLBuild {
$SQLServerObjt | Table @TableParams
}
}
}
catch {
Write-PscriboMessage -IsWarning $_.Exception.Message
} catch {
Write-PScriboMessage -IsWarning $_.Exception.Message
}
}
}
Expand Down
Loading

0 comments on commit 1ad3163

Please sign in to comment.