Skip to content

v0.9.12#247

Merged
rebelinux merged 17 commits into
AsBuiltReport:devfrom
rebelinux:dev
Apr 3, 2026
Merged

v0.9.12#247
rebelinux merged 17 commits into
AsBuiltReport:devfrom
rebelinux:dev

Conversation

@rebelinux
Copy link
Copy Markdown
Collaborator

[0.9.12] - 2026-04-02

🧰 Added

  • Add Authentication Policies and Authentication Policy Silos support (Get-AbrADAuthenticationPolicy)
  • Add condition to check for members of Pre-Windows 2000 group
  • Add a Replication diagram to the report
  • Add comprehensive copilot instructions for project structure, build, test, architecture, and coding conventions.
  • Add Get-AbrADReportBrief function to generate a one-page summary of Active Directory configuration and integrate it into the report generation process

🔃 Changed

  • Update module version to 0.9.12
  • Upgrade AsBuiltReport.Chart module to version 0.3.0
  • Upgrade PSPKI module to version 4.4.0
  • Migrate Diagrammer.Core to AsBuiltReport.Diagram module
  • Reorganize module structure - moved module files to AsBuiltReport.System.Resources/ subdirectory
  • Bump AsBuiltReport.Diagram module version from 1.0.2 to 1.0.4 in the module manifest
  • Revise README to reflect compatibility with PowerShell 7+, update system requirements, and clarify Linux/macOS support
  • Replace references to Diagrammer.Core with AsBuiltReport.Chart and AsBuiltReport.Diagram modules
  • Improve known issues section for clarity and detail
  • Enhance documentation clarity in MicrosoftAD.psd1 for English and Spanish languages
  • Refactor localization strings in MicrosoftAD.psd1 for clarity and consistency. Improved grammar, punctuation,
    and readability across various best practice descriptions related to Active Directory configurations
  • Enhance Active Directory report structure by adding detailed sections for Forest, Sites, Infrastructure, GPOs, and Account Policies.
    Improve localization strings for English and Spanish, and handle missing infrastructure scenarios in Exchange, SCCM, and DHCP sections
  • Refactor Get-AbrADReportBrief, Get-AbrDNSSection, and Get-AbrDomainSection for improved logging and PowerShell best practices
  • Updated Get-AbrADReportBrief to include company information (name, contact, email) in the report overview
  • Changed the collection of domain and report scope information to use [System.Collections.Generic.List[object]] instead of [System.Collections.ArrayList]
  • Updated PowerShell module version in AsBuiltReport.Microsoft.AD.psd1 to 7.4
  • Incremented version number to 0.9.12 in multiple scripts for consistency
  • Restructure Private folder to better organize helper functions and improve maintainability

🐛 Fixed

  • Fix Sysvol Replication table not correctly displaying the replication status of the domain controllers

❌ Removed

  • Remove unused Get-ColumnChart and Get-PieChart functions from the module
  • Remove support for PowerShell 5.1
  • Remove PKI section from the report as it is not working properly and requires additional permissions to collect the information

rebelinux and others added 17 commits March 19, 2026 15:46
…rADSite, and Get-AbrADTrust scripts for consistency. Update Invoke-AsBuiltReport.Microsoft.AD to use Write-AbrPSObject for improved output handling.
- Replace [System.Collections.ArrayList] with [System.Collections.Generic.List[object]]
  across 60+ files (168 instances), eliminating boxing overhead and non-generic usage
- Remove unnecessary | Out-Null from .Add() calls since Generic List.Add() returns void
- Add [CmdletBinding()] to 6 functions missing it: ConvertTo-ADCanonicalName,
  ConvertTo-ADObjectName, Get-ADExchangeServer, Get-ADObjectSearch,
  Invoke-CommandWithTimeout, Invoke-DcDiag
- Normalize [cmdletBinding()] → [CmdletBinding()] casing (Get-WinADLastBackup)
- Update [OutputType([System.Collections.ArrayList])] → [OutputType([System.Collections.Generic.List[object]])]
  in 6 section info functions
- Replace catch { Out-Null } with catch { $null } for correct suppression semantics
- Replace Write-Host with Write-PScriboMessage in Private functions:
  Get-AbrDomainSection, Get-AbrDNSSection, Show-AbrDebugExecutionTime
- Remove redundant Write-Host execution-time block from Get-AbrADCAAIA
  (already handled by Show-AbrDebugExecutionTime)
- Clean up boolean comparisons: replace -eq $true/-eq $false/-ne $true with
  direct boolean expressions in Get-AbrADSecurityAssessment, Get-AbrADDomainObject,
  Get-WinADForestDetail, Get-WinADDuplicateSPN, Get-AbrDiagCertificateAuthority,
  Get-AbrADDFSHealth
- Replace string concatenation with + with string interpolation in
  Get-RequiredModule, Get-AbrADKerberosAudit, Get-AbrADDCRoleFeature, Get-AbrADDFSHealth
- Add -PathType Container/Leaf to all Test-Path calls in New-AbrADDiagram,
  Get-AbrDiagrammer, Get-AbrADGPO, Get-AbrADSite

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ction for improved logging and PowerShell best practices

- Updated Get-AbrADReportBrief to include company information (name, contact, email) in the report overview.
- Changed the collection of domain and report scope information to use [System.Collections.Generic.List[object]] instead of [System.Collections.ArrayList].
- Replaced Write-PScriboMessage with Write-Host for logging domain collection messages in Get-AbrDNSSection and Get-AbrDomainSection for consistency.
…sistency; update module dependencies in Invoke-AsBuiltReport.Microsoft.AD.ps1
…sion requirement to 7.4

- Updated PowerShell module version in AsBuiltReport.Microsoft.AD.psd1 to 7.4.
- Incremented version number to 0.9.12 in multiple scripts for consistency.
- Updated version notes in scripts to reflect the new version.
…ation

- Introduced Get-AbrADReplicationInfo function to gather Active Directory replication details and build a diagram using Psgraph.
- Introduced Get-AbrADSitesInfo function to extract and visualize Active Directory sites information.
- Updated Get-AbrDiagReplication to utilize the new Get-AbrADReplicationInfo function for improved replication data handling.
- Enhanced diagram generation in Get-AbrADForest, Get-AbrADSite, Get-AbrADTrust, and Get-AbrDomainSection functions with better aspect ratio handling and page breaks.
- Commented out the Get-AbrADDCDiag call in Get-AbrDomainSection for potential future use.
- Deleted unused functions: Get-AbrADCARoot, Get-AbrADCASecurity, Get-AbrADCASubordinate, Get-AbrADCASummary, Get-AbrADCATemplate, Get-AbrPKISection.
- Updated Get-AbrADDFSHealth to include 'Offline' in replication status.
- Removed references to the PSPKI module from Invoke-AsBuiltReport.Microsoft.AD.
- Updated CHANGELOG.md to reflect the removal of functions and module upgrades.
- Updated README.md to specify PowerShell 7.4+ as the minimum requirement.
Copilot AI review requested due to automatic review settings April 3, 2026 00:09
@rebelinux rebelinux merged commit a06a6a1 into AsBuiltReport:dev Apr 3, 2026
2 of 5 checks passed
Copy link
Copy Markdown

@github-advanced-security github-advanced-security AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PSScriptAnalyzer found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release v0.9.12 updates the AsBuiltReport.Microsoft.AD module with new AD reporting capabilities (incl. authentication policy/silo reporting and replication diagramming), removes the non-functional PKI section, and refactors parts of the internal tooling/report pipeline to align with updated module structure and PowerShell 7.4+ requirements.

Changes:

  • Adds new tool/helper functions and refactors many report generators to use List[object] instead of ArrayList, plus additional CmdletBinding/logging adjustments.
  • Introduces/updates diagramming assets and a new replication diagram, and updates diagram path validation/icon handling.
  • Updates documentation, tests, changelog, manifest/config defaults, and CI workflow to reflect v0.9.12 (and removal of PSPKI install).

Reviewed changes

Copilot reviewed 87 out of 117 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
Todo.md Updates project TODO list item.
Tests/LocalizationData.Tests.ps1 Updates localization test paths for new module layout.
README.md Updates stated minimum PowerShell version (7.4+).
CHANGELOG.md Finalizes v0.9.12 changelog date and entries.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Test-WinRM.ps1 Adds WinRM test helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Test-ComputerPort.ps1 Adds TCP/UDP port testing helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Show-AbrDebugExecutionTime.ps1 Switches execution-time output to PScribo logging and adjusts catch blocks.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Invoke-CommandWithTimeout.ps1 Adds [CmdletBinding()] to timeout wrapper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-WinADLastBackup.ps1 Normalizes CmdletBinding casing.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-WinADForestDetail.ps1 Refines RODC filtering and removes stray output.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-WinADDuplicateSPN.ps1 Simplifies boolean checks.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-WinADDuplicateObject.ps1 Adjusts catch blocks to avoid Out-Null.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-WinADDFSHealth.ps1 Normalizes CmdletBinding casing.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ValidPSSession.ps1 Version bump and removes Out-Null from .Add() calls.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ValidDCfromDomain.ps1 Adds helper to pick a reachable DC for a domain.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ValidCIMSession.ps1 Version bump and removes Out-Null from .Add() calls.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-RequiredModule.ps1 Updates version and version-string formatting.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-RequiredFeature.ps1 Version bump.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-DCWinRMState.ps1 Removes Out-Null from .Add() calls.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ComputerSplit.ps1 Adds helper to split local vs remote computer targets.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ComputerADDomain.ps1 Adds helper to get current domain via .NET.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-CimData.ps1 Adds CIM data retrieval helper for local/remote scenarios.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ADObjectSearch.ps1 Adds CmdletBinding and refactors to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-ADObjectList.ps1 Refactors filter/object collection to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Copy-DictionaryManual.ps1 Adds dictionary deep-clone helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-TextYN.ps1 Adds boolean-to-Yes/No conversion helper using translations.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-OperatingSystem.ps1 Adds OS/version normalization helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-HashToYN.ps1 Adds hashtable-to-Yes/No conversion helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-FileSizeString.ps1 Adds file-size formatting helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-EmptyToFiller.ps1 Adds empty-to-filler conversion helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-ADObjectName.ps1 Adds CmdletBinding and refactors to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertTo-ADCanonicalName.ps1 Adds CmdletBinding and refactors to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Tools/ConvertFrom-DistinguishedName.ps1 Adds DN parsing/conversion helper.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Convert-TimeToDay.ps1 Adjusts catch behavior.
AsBuiltReport.Microsoft.AD/Src/Private/Tools/Convert-IpAddressToMaskLength.ps1 Adds subnet mask length conversion helper.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Invoke-DcDiag.ps1 Adds CmdletBinding and version bump.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-ADExchangeServer.ps1 Refactors role list collection to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrForestSection.ps1 Version bump.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrDomainSection.ps1 Version bump and adjusts domain controller sub-sections (incl. dcdiag call change).
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrDNSSection.ps1 Version bump and tweaks host output formatting.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrDHCPinAD.ps1 Refactors collections to List[object] and updates catches.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADTrust.ps1 Refactors collections to List[object] and updates diagram aspect ratio helper usage.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADSitesInventoryInfo.ps1 Refactors to List[object] and updates OutputType.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADSiteReplication.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADSecurityAssessment.ps1 Refactors collections to List[object] and simplifies boolean filters.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADSCCM.ps1 Refactors collections to List[object] and adjusts catches.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADReportBrief.ps1 Adds company info in brief and removes CA scope entry; refactors to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADOU.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADKerberosAudit.ps1 Refactors collections to List[object] and adjusts SID string construction.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADInfrastructureService.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADHardening.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADFSMO.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADForest.ps1 Refactors collections to List[object] and updates diagram aspect ratio helper usage.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADExchange.ps1 Refactors collections to List[object] and adjusts catches.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDuplicateSPN.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDuplicateObject.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDomainLastBackup.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDomain.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDNSZone.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDNSInfrastructure.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDFSHealth.ps1 Refactors collections to List[object] and fixes Sysvol table name formatting.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDCRoleFeature.ps1 Refactors collections to List[object] and adjusts string concatenation.
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADDCDiag.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrADAuthenticationPolicy.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Get-PieChart.ps1 Removes unused pie chart helper.
AsBuiltReport.Microsoft.AD/Src/Private/Get-ColumnChart.ps1 Removes unused column chart helper.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrPKISection.ps1 Removes PKI section orchestrator.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCATemplate.ps1 Removes CA template reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCASummary.ps1 Removes CA summary reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCASubordinate.ps1 Removes subordinate CA reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCASecurity.ps1 Removes CA security reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCARoot.ps1 Removes root CA reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCAKeyRecoveryAgent.ps1 Removes CA KRA reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCACryptographyConfig.ps1 Removes CA crypto config reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCACRLSetting.ps1 Removes CA CRL settings reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Get-AbrADCAAIA.ps1 Removes CA AIA reporting function.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/New-AbrADDiagram.ps1 Updates diagram version and strengthens path validation; adjusts icon pathing.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Images.ps1 Adds centralized image filename map.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/icons/Forrest_Root.png Adds diagram icon asset.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/icons/DomainController.png Adds diagram icon asset.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/icons/DMAD_Logo.png Adds diagram icon asset.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/icons/ADDomain.png Adds diagram icon asset.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagTrust.ps1 Version bump.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagSiteInventory.ps1 Refactors collections to List[object].
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagSite.ps1 Version bump.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagReplication.ps1 Adds/updates replication diagram rendering and localized legend text.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagrammer.ps1 Refactors diagram type collection and strengthens export path check.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagForest.ps1 Version bump.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrDiagCertificateAuthority.ps1 Simplifies boolean checks for CA grouping.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrADTrustInfo.ps1 Refactors to List[object] and updates OutputType.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrADSitesInfo.ps1 Refactors to List[object] and updates OutputType.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrADReplicationInfo.ps1 Refactors to List[object] and simplifies derived fields.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrADForestInfo.ps1 Refactors to List[object] and updates OutputType.
AsBuiltReport.Microsoft.AD/Src/Private/Diagram/Get-AbrADCaInfo.ps1 Refactors to List[object] and updates OutputType.
AsBuiltReport.Microsoft.AD/AsBuiltReport.Microsoft.AD.psm1 Updates dot-sourcing/export logic for new subfolder structure.
AsBuiltReport.Microsoft.AD/AsBuiltReport.Microsoft.AD.psd1 Bumps module version, enforces PS 7.4, removes PSPKI dependency, updates diagram module version.
AsBuiltReport.Microsoft.AD/AsBuiltReport.Microsoft.AD.json Adds default language and removes CA InfoLevel.
.github/workflows/Release.yml Removes PSPKI install step and keeps required module installs.
Comments suppressed due to low confidence (2)

AsBuiltReport.Microsoft.AD/Src/Private/Tools/Get-RequiredModule.ps1:38

  • $RequiredModule can be $null when the module isn't installed, but the code immediately dereferences $RequiredModule.Version.*, which will throw before the intended "required" error message. Add an explicit null check for $RequiredModule (or check .Count) before building $ModuleVersion.
    AsBuiltReport.Microsoft.AD/Src/Private/Report/Get-AbrDomainSection.ps1:83
  • Get-AbrADDCDiag has been commented out, which prevents DCDiag results from ever being collected/rendered even when $HealthCheck.DomainController.Diagnostic is enabled. If this is temporary, gate it behind an option/InfoLevel and keep the call active; otherwise update the health check/report logic (and release notes) to reflect the removal.

Comment thread Todo.md
@@ -1 +1 @@
- [x] Fix dcdiag section
- [] Add AS-Rep Roasting
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Todo item formatting is not valid Markdown task list syntax (currently - []). Use the standard checkbox format (- [ ] or - [x]) so it renders correctly in GitHub and supports task list tracking.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants