private/_domainInfo.ps1


$RootDSE = [adsi]"LDAP://rootDSE"
$ADForestInfo = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$ADDomainInfo = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$ADSIDomain = [adsi]"LDAP://$($RootDSE.defaultNamingContext.value)"

$ADTable = [hashtable]::new()
$ADTable['RootDSE'] = @{
    configurationNamingContext = $rootDSE.configurationNamingContext
    defaultNamingContext = $rootDSE.defaultNamingContext
    dnsHostName = $rootDSE.dnsHostName
    domainControllerFunctionality = $rootDSE.domainControllerFunctionality
    domainFunctionality = $rootDSE.domainFunctionality  ## Convert
    dsServiceName = $rootDSE.dsServiceName
    forestFunctionality = $rootDSE.forestFunctionality  ## Convert
    highestCommittedUSN = $rootDSE.highestCommittedUSN
    isGlobalCatalogReady = $rootDSE.isGlobalCatalogReady
    isSynchronized = $rootDSE.isSynchronized
    ldapServiceName = $rootDSE.ldapServiceName
    namingContexts = $rootDSE.namingContexts
    rootDomainNamingContext = $rootDSE.rootDomainNamingContext
    schemaNamingContext = $rootDSE.schemaNamingContext
    serverName = $rootDSE.serverName
    subschemaSubentry = $rootDSE.subschemaSubentry
    supportedCapabilities = $rootDSE.supportedCapabilities
    supportedControl = $rootDSE.supportedControl
    supportedLDAPPolicies = $rootDSE.supportedLDAPPolicies
    supportedLDAPVersion = $rootDSE.supportedLDAPVersion
    supportedSASLMechanisms = $rootDSE.supportedSASLMechanisms
}
$ADTable['Forest'] = @{
    Name = $ADForestInfo.Name
    Sites = $ADForestInfo.Sites
    GlobalCatalogs = $ADForestInfo.GlobalCatalogs
    ApplicationPartitions = $ADForestInfo.ApplicationPartitions
    ForestMode = $ADForestInfo.ForestMode
    Schema = $ADForestInfo.Schema
    SchemaRoleOwner = $ADForestInfo.SchemaRoleOwner
    NamingRoleOwner = $ADForestInfo.NamingRoleOwner
    RootDomain = $ADForestInfo.RootDomain
}
$ADTable['Domain'] = @{
    Name = $ADDomainInfo.Name
    Forest = $ADDomainInfo.Forest
    DomainControllers = $ADDomainInfo.DomainControllers
    Children = $ADDomainInfo.Children
    DomainMode = $ADDomainInfo.DomainMode
    Parent = $ADDomainInfo.Parent
    PdcRoleOwner = $ADDomainInfo.PdcRoleOwner
    RidRoleOwner = $ADDomainInfo.RidRoleOwner
    InfrastructureRoleOwner = $ADDomainInfo.InfrastructureRoleOwner
    SID = (New-Object 'Security.Principal.SecurityIdentifier' ([byte[]]$ADSIDomain.objectSID.value),0).value
    DN = $($RootDSE.defaultNamingContext.value)
    Netbios = $env:UserDomain
}