Skip to content

Commit

Permalink
Merge pull request #66 from AsBuiltReport/dev
Browse files Browse the repository at this point in the history
v0.7.7 public release
  • Loading branch information
rebelinux committed Sep 7, 2022
2 parents 33abb62 + c5c718b commit c4431d3
Show file tree
Hide file tree
Showing 10 changed files with 4,027 additions and 3,945 deletions.
2 changes: 1 addition & 1 deletion AsBuiltReport.Microsoft.AD.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AsBuiltReport.Microsoft.AD.psm1'

# Version number of this module.
ModuleVersion = '0.7.6'
ModuleVersion = '0.7.7'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# :arrows_clockwise: Microsoft AD As Built Report Changelog

## [0.7.7] - 2022-09-07

### Added

- Add table to show the pending/missing Windows updates (Health Check)

### Changed

- Improve domain controller dcdiag table

### Fixed

- close [#57](https://github.com/AsBuiltReport/AsBuiltReport.Microsoft.AD/issues/57)
- close [#59](https://github.com/AsBuiltReport/AsBuiltReport.Microsoft.AD/issues/59)
- close [#60](https://github.com/AsBuiltReport/AsBuiltReport.Microsoft.AD/issues/60)
- close [#61](https://github.com/AsBuiltReport/AsBuiltReport.Microsoft.AD/issues/61)
- close [#62](https://github.com/AsBuiltReport/AsBuiltReport.Microsoft.AD/issues/62)

## [0.7.6] - 2022-09-04

### Changed
Expand Down
7,741 changes: 3,851 additions & 3,890 deletions Samples/Sample Microsoft AD As Built Report.html

Large diffs are not rendered by default.

Binary file modified Samples/Sample Microsoft AD As Built Report.pdf
Binary file not shown.
40 changes: 33 additions & 7 deletions Src/Private/Get-AbrADDCDiag.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrADDCDiag {
.DESCRIPTION
.NOTES
Version: 0.7.6
Version: 0.7.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -37,13 +37,39 @@ function Get-AbrADDCDiag {
if ($DCDIAG) {
Section -ExcludeFromTOC -Style NOTOCHeading5 $($DC.ToString().split('.')[0].ToUpper()) {
$OutObj = @()
$Description = @{
"Advertising" = "Validates this Domain Controller can be correctly located through the KDC service. It does not validate the Kerberos tickets answer or the communication through the TCP and UDP port 88.", 'High'
"Connectivity" = "Initial connection validation, checks if the DC can be located in the DNS, validates the ICMP ping (1 hop), checks LDAP binding and also the RPC connection. This initial test requires ICMP, LDAP, DNS and RPC connectivity to work properly.", 'Medium'
'VerifyReferences' = 'Validates that several attributes are present for the domain in the countainer and subcontainers in the DC objetcs. This test will fail if any attribute is missing.', 'High'
'FrsEvent' = 'Checks if theres any errors in the event logs regarding FRS replication. If running Windows Server 2008 R2 or newer on all Domain Controllers is possible SYSVOL were already migrated to DFSR, in this case errors found here can be ignored.', 'Medium'
'DFSREvent' = 'Checks if theres any errors in the event logs regarding DFSR replication. If running Windows Server 2008 or older on all Domain Controllers is possible SYSVOL is still using FRS, and in this case errors found here can be ignored. Obs. is highly recommended to migrate SYSVOL to DFSR.', 'Medium'
'SysVolCheck' = 'Validates if the registry key HKEY_Local_Machine\System\CurrentControlSet\Services\Netlogon\Parameters\SysvolReady=1 exist. This registry has to exist with value 1 for the DCs SYSVOL to be advertised.', 'High'
'KccEvent' = 'Validates through KCC there were no errors in the Event Viewer > Applications and Services Logs > Directory Services event log in the past 15 minutes (default time).', 'High'
'KnowsOfRoleHolders' = 'Checks if this Domain Controller is aware of which DC (or DCs) hold the FSMOs.', 'High'
'MachineAccount' = 'Checks if this computer account exist in Active Directory and the main attributes are set. If this validation reports error. the following parameters of DCDIAG might help: /RecreateMachineAccount and /FixMachineAccount.', 'High'
'NCSecDesc' = 'Validates if permissions are correctly set in this Domain Controller for all naming contexts. Those permissions directly affect replications health.', 'Medium'
'NetLogons' = 'Validates if core security groups (including administrators and Authenticated Users) can connect and read NETLOGON and SYSVOL folders. It also validates access to IPC$. which can lead to failures in organizations that disable IPC$.', 'High'
'ObjectsReplicated' = 'Checks the replication health of core objects and attributes.', 'High'
'Replications' = 'Makes a deep validation to check the main replication for all naming contexts in this Domain Controller.', 'High'
'RidManager' = 'Validates this Domain Controller can locate and contact the RID Master FSMO role holder. This test is skipped in RODCs.', 'High'
'Services' = 'Validates if the core Active Directory services are running in this Domain Controller. The services verified are: RPCSS, EVENTSYSTEM, DNSCACHE, ISMSERV, KDC, SAMSS, WORKSTATION, W32TIME, NETLOGON, NTDS (in case Windows Server 2008 or newer) and DFSR (if SYSVOL is using DFSR).', 'High'
'SystemLog' = 'Checks if there is any erros in the Event Viewer > System event log in the past 60 minutes. Since the System event log records data from many places, errors reported here may lead to false positive and must be investigated further. The impact of this validation is marked as Low.', 'Low'
'Topology' = 'Topology Checks that the KCC has generated a fully connected topology for all domain controllers.', 'Medium'
'VerifyReplicas' = 'Checks that all application directory partitions are fully instantiated on all replica servers.', 'High'
'CutoffServers' = 'Checks for any server that is not receiving replications because its partners are not running', 'Medium'
'DNS' = 'DNS Includes six optional DNS-related tests, as well as the Connectivity test, which runs by default.', 'Medium'
'CheckSecurityError' = 'Reports on the overall health of replication with respect to Active Directory security in domain controllers running Windows Server 2003 SP1.', 'Medium'
'FrsSysVol' = 'Checks that the file replication system (FRS) system volume (SYSVOL) is ready', 'Medium'
}
Write-PscriboMessage "Discovered Active Directory DCDiag information for DC $DC."
foreach ($Result in $DCDIAG) {
foreach ($Result in $DCDIAG | Where-Object {$_.Entity -eq $($DC.ToString().split('.')[0].ToUpper())}) {
try {
Write-PscriboMessage "Collecting Active Directory DCDiag test '$($Result.TestName)' for DC $DC."
$inObj = [ordered] @{
'Test Name' = $Result.TestName
'Result' = $Result.TestResult
'Result' = $TextInfo.ToTitleCase($Result.TestResult)
'Impact' = $Description[$Result.TestName][1]
'Description' = $Description[$Result.TestName][0]
}
$OutObj += [pscustomobject]$inobj
}
Expand All @@ -52,17 +78,17 @@ function Get-AbrADDCDiag {
}
}
if ($HealthCheck.DomainController.Diagnostic) {
$OutObj | Where-Object { $_.'Result' -like 'failed'} | Set-Style -Style Critical -Property 'Result'
$OutObj | Where-Object { $_.'Result' -like 'failed'} | Set-Style -Style Critical
}
$TableParams = @{
Name = "Domain Controller DCDiag - $($DC.ToString().split('.')[0].ToUpper())"
Name = "DCDiag Test Status - $($DC.ToString().split('.')[0].ToUpper())"
List = $false
ColumnWidths = 50, 50
ColumnWidths = 23, 10, 10, 57
}
if ($Report.ShowTableCaptions) {
$TableParams['Caption'] = "- $($TableParams.Name)"
}
$OutObj | Sort-Object -Property 'Test Name' | Table @TableParams
$OutObj | Sort-Object -Property 'Entity' | Table @TableParams
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Src/Private/Get-AbrADDCRoleFeature.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ function Get-AbrADDCRoleFeature {
$OutObj | Table @TableParams
if ($HealthCheck.DomainController.Software) {
Paragraph "Health Check:" -Italic -Bold -Underline
Paragraph "Best Practices: Domain Controllers should have limited software and agents installed including roles and services. Non-essential code running on Domain Controllers is a risk to the enterprise Active Directory environment. A Domain Controller should only run required software, services and roles critical to essential operation" -Italic -Bold
Paragraph "Best Practices: Domain Controllers should have limited software and agents installed including roles and services. Non-essential code running on Domain Controllers is a risk to the enterprise Active Directory environment. A Domain Controller should only run required software, services and roles critical to essential operation." -Italic -Bold
}
}
}
Expand Down
Loading

0 comments on commit c4431d3

Please sign in to comment.