Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.8.13 public release #195

Merged
merged 16 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ body:
label: Veeam Backup & Replication version
options:
- vNEXT
- 12.3
- 12.2
- 12.1
- 12
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/change_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ body:
label: Veeam Backup & Replication version
options:
- vNEXT
- 12.3
- 12.2
- 12.1
- 12
Expand Down
6 changes: 3 additions & 3 deletions AsBuiltReport.Veeam.VBR.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AsBuiltReport.Veeam.VBR.psm1'

# Version number of this module.
ModuleVersion = '0.8.12'
ModuleVersion = '0.8.13'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down Expand Up @@ -55,7 +55,7 @@
RequiredModules = @(
@{
ModuleName = 'AsBuiltReport.Core';
ModuleVersion = '1.4.0'
ModuleVersion = '1.4.1'
}
@{
ModuleName = 'PScriboCharts';
Expand All @@ -67,7 +67,7 @@
}
@{
ModuleName = 'Veeam.Diagrammer';
ModuleVersion = '0.6.16'
ModuleVersion = '0.6.18'
}
)

Expand Down
4 changes: 3 additions & 1 deletion AsBuiltreport.Veeam.VBR.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@
"Inventory": {
"FileShare": 1,
"PHY": 1,
"VI": 1
"VI": 1,
"EntraID": 1
},
"Storage": {
"ISILON": 1,
Expand All @@ -71,6 +72,7 @@
"Agent": 1,
"Backup": 1,
"BackupCopy": 1,
"EntraID": 3,
"FileShare": 1,
"Surebackup": 1,
"Replication": 1,
Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

##### This project is community maintained and has no sponsorship from Veeam, its employees or any of its affiliates.

## [0.8.13] - 2024-12-11

### Added

- Add EntraID Tenant configuration
- Add Objects Backup Job information
- Update Malware detection setting
- Add Signature Detection
- Update Security & Compliance Best Practice content
- Add Syslog Event Filter information
- Add Google Cloud Storage repository information

### Changed

- Increase Veeam.Diagrammer minimum requirement to v0.6.18
- Change the infrastructure diagram default save location to $OutputFolderPath
- Increase AsBuiltReport.Core to v1.4.1

### Fixed

- Fix error "A positional parameter cannot be found that accepts argument '-'" at Get-AbrVbrConfigurationBackupSetting cmdlet
- Fix ConvertTo-HashToYN cmdlet not generating an ordereddictionary output

## [0.8.12] - 2024-11-22

### Changed
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ The table below outlines the default and maximum **InfoLevel** settings for each
| VI | 1 | 1 |
| PHY | 1 | 2 |
| FileShare | 1 | 1 |
| EntraID | 1 | 1 |

The table below outlines the default and maximum **InfoLevel** settings for each Storage Infrastructure section.

Expand All @@ -232,6 +233,7 @@ The table below outlines the default and maximum **InfoLevel** settings for each
| FileShare | 1 | 2 |
| Replication | 1 | 2 |
| Restores | 0 | 1 |
| EntraID | 1 | 2 |

The table below outlines the default and maximum **InfoLevel** settings for each Replication section.

Expand Down
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrAgentBackupjobConf.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function Get-AbrVbrAgentBackupjobConf {
$OutObj = [pscustomobject](ConvertTo-HashToYN $inObj)

if ($HealthCheck.Jobs.BestPractice) {
$OutObj | Where-Object { $Null -like $_.'Description' } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -eq "--" } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -match "Created by" } | Set-Style -Style Warning -Property 'Description'
}

Expand All @@ -70,8 +70,7 @@ function Get-AbrVbrAgentBackupjobConf {
}
$OutObj | Table @TableParams
if ($HealthCheck.Jobs.BestPractice) {
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $Null -like $_.'Description' }) {
Paragraph "Health Check:" -Bold -Underline
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
BlankLine
Paragraph {
Text "Best Practice:" -Bold
Expand Down
17 changes: 14 additions & 3 deletions Src/Private/Get-AbrVbrBackupRepository.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupRepository {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.12
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -226,11 +226,22 @@ function Get-AbrVbrBackupRepository {
$inObj.Remove('Extent of ScaleOut Backup Repository')
}

if ($BackupRepo.Type -in @('AmazonS3Compatible', 'WasabiS3')) {
if ($BackupRepo.Type -in @('GoogleCloudStorage')) {
$inObj.Add('Region Id', ($BackupRepos.GoogleCloudOptions.RegionId))
$inObj.Add('Region Type', ( $BackupRepos.GoogleCloudOptions.RegionType))
$inObj.Add('Bucket Name', ( $BackupRepos.GoogleCloudOptions.BucketName))
$inObj.Add('Folder Name', ( $BackupRepos.GoogleCloudOptions.FolderName))
$inObj.Add('Storage Class', ( $BackupRepos.GoogleCloudOptions.StorageClass))
$inObj.Add('Enable Nearline Storage Class', ( $BackupRepos.GoogleCloudOptions.EnableNearlineStorageClass))
$inObj.Add('Enable Coldline Storage Class', ( $BackupRepos.GoogleCloudOptions.EnableColdlineStorageClass))
$inObj.Remove('Path')
}

if ($BackupRepo.Type -in @('AmazonS3Compatible', 'WasabiS3', 'GoogleCloudStorage')) {
$inObj.Add('Object Lock Enabled', ($BackupRepo.ObjectLockEnabled))
}

if ($BackupRepo.Type -in @('AmazonS3Compatible', 'WasabiS3')) {
if ($BackupRepo.Type -in @('AmazonS3Compatible', 'WasabiS3', 'GoogleCloudStorage')) {
$inObj.Add('Mount Server', (Get-VBRServer | Where-Object { $_.id -eq $BackupRepo.MountHostId.Guid }).Name)
}

Expand Down
9 changes: 7 additions & 2 deletions Src/Private/Get-AbrVbrBackupServerInfo.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupServerInfo {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.12
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -425,6 +425,12 @@ function Get-AbrVbrBackupServerInfo {
"ProviderCredentialsId" = ""
"ProviderInfo" = ""
"ProviderId" = ""
"EntraIdSqlHostName" = "localhost"
"EntraIdSqlHostPort" = "5432"
"EntraIdSqlPassword" = ""
"EntraIdSqlServiceName" = "postgresql-x64-15"
"EntraIdSqlUserName" = "postgres"
"HighestDetectedVMCVersion" = ""
}
if ($VeeamInfo) {
$OutObj = @()
Expand All @@ -444,7 +450,6 @@ function Get-AbrVbrBackupServerInfo {
0 { '--' }
1 { $Registry.Value }
default { $Registry.Value -Join ', ' }

}
}
$OutObj += [pscustomobject](ConvertTo-HashToYN $inObj)
Expand Down
7 changes: 3 additions & 4 deletions Src/Private/Get-AbrVbrCloudConnectCG.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrCloudConnectCG {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.12
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -66,7 +66,7 @@ function Get-AbrVbrCloudConnectCG {

$OutObj = [pscustomobject](ConvertTo-HashToYN $inObj)
if ($HealthCheck.Jobs.BestPractice) {
$OutObj | Where-Object { $Null -like $_.'Description' } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -eq "--" } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -match "Created by" } | Set-Style -Style Warning -Property 'Description'
}

Expand All @@ -81,8 +81,7 @@ function Get-AbrVbrCloudConnectCG {
}
$OutObj | Sort-Object -Property 'Name' | Table @TableParams
if ($HealthCheck.Jobs.BestPractice) {
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $Null -like $_.'Description' }) {
Paragraph "Health Check:" -Bold -Underline
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
BlankLine
Paragraph {
Text "Best Practice:" -Bold
Expand Down
7 changes: 3 additions & 4 deletions Src/Private/Get-AbrVbrCloudConnectGP.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrCloudConnectGP {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.12
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -50,7 +50,7 @@ function Get-AbrVbrCloudConnectGP {
}

if ($HealthCheck.Jobs.BestPractice) {
$OutObj | Where-Object { $Null -like $_.'Description' } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -eq "--" } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -match "Created by" } | Set-Style -Style Warning -Property 'Description'
}

Expand All @@ -65,8 +65,7 @@ function Get-AbrVbrCloudConnectGP {
}
$OutObj | Sort-Object -Property 'Name' | Table @TableParams
if ($HealthCheck.Jobs.BestPractice) {
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $Null -like $_.'Description' }) {
Paragraph "Health Check:" -Bold -Underline
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
BlankLine
Paragraph {
Text "Best Practice:" -Bold
Expand Down
7 changes: 3 additions & 4 deletions Src/Private/Get-AbrVbrCloudConnectTenant.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrCloudConnectTenant {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.12
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -134,7 +134,7 @@ function Get-AbrVbrCloudConnectTenant {
$OutObj = [pscustomobject](ConvertTo-HashToYN $inObj)

if ($HealthCheck.CloudConnect.BestPractice) {
$OutObj | Where-Object { $Null -like $_.'Description' } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -eq "--" } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Description' -match "Created by" } | Set-Style -Style Warning -Property 'Description'
$OutObj | Where-Object { $_.'Expiration Date' -match '(Expired)' } | Set-Style -Style Warning -Property 'Expiration Date'
}
Expand All @@ -150,8 +150,7 @@ function Get-AbrVbrCloudConnectTenant {
}
$OutObj | Sort-Object -Property 'Name' | Table @TableParams
if ($HealthCheck.Jobs.BestPractice) {
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $Null -like $_.'Description' }) {
Paragraph "Health Check:" -Bold -Underline
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
BlankLine
Paragraph {
Text "Best Practice:" -Bold
Expand Down
6 changes: 3 additions & 3 deletions Src/Private/Get-AbrVbrConfigurationBackupSetting.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrConfigurationBackupSetting {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.12
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -83,14 +83,14 @@ function Get-AbrVbrConfigurationBackupSetting {
BlankLine
if ($OutObj | Where-Object { $_.'Encryption Enabled' -like 'No' } ) {
Paragraph {
Text "Best Practice:" - Bold
Text "Best Practice:" -Bold
Text "Whenever possible, enable configuration backup encryption."
}
BlankLine
}
if ($OutObj | Where-Object { $_.'Run Job Automatically' -like 'No' }) {
Paragraph {
Text "Best Practice:" - Bold
Text "Best Practice:" -Bold
Text "It's a recommended best practice to activate the 'Run job automatically' option of the Backup Configuration job."
}
BlankLine
Expand Down
67 changes: 67 additions & 0 deletions Src/Private/Get-AbrVbrEntraIDBackupjob.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@

function Get-AbrVbrEntraIDBackupjob {
<#
.SYNOPSIS
Used by As Built Report to returns entraid jobs created in Veeam Backup & Replication.
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.13
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Credits: Iain Brighton (@iainbrighton) - PScribo module

.LINK
https://github.com/AsBuiltReport/AsBuiltReport.Veeam.VBR
#>
[CmdletBinding()]
param (

)

begin {
Write-PScriboMessage "Discovering Veeam VBR EntraID Tenant Backup jobs information from $System."
}

process {
try {
if ($Bkjobs = Get-VBREntraIDTenantBackupJob | Sort-Object -Property 'Name') {
Section -Style Heading3 'EntraID Tenant Backup Jobs' {
Paragraph "The following section list entraid tenant jobs created in Veeam Backup & Replication."
BlankLine
$OutObj = @()
foreach ($Bkjob in $Bkjobs) {
try {
Write-PScriboMessage "Discovered $($Bkjob.Name) Backup Job."
$inObj = [ordered] @{
'Name' = $Bkjob.Name
'Tenant' = $Bkjob.Tenant.Name
'Schedule Status' = Switch ($Bkjob.EnableSchedule) {
'False' { 'Not Scheduled' }
'True' { 'Scheduled' }
}
}
$OutObj += [pscustomobject](ConvertTo-HashToYN $inObj)
} catch {
Write-PScriboMessage -IsWarning "EntraID Tenant Backup Jobs $($SBkjob.Name) Section: $($_.Exception.Message)"
}
}

$TableParams = @{
Name = "EntraID Tenant Backup Jobs - $VeeamBackupServer"
List = $false
ColumnWidths = 40, 40, 20
}
if ($Report.ShowTableCaptions) {
$TableParams['Caption'] = "- $($TableParams.Name)"
}
$OutObj | Sort-Object -Property 'Tenant' | Table @TableParams
}
}
} catch {
Write-PScriboMessage -IsWarning "EntraID Tenant Backup Jobs Section: $($_.Exception.Message)"
}
}
end {}
}
Loading
Loading