<#Created By Abhishek Bansal
Read Note
Script Usage :: Being working as Active Directory Admin & that too for multiple clients, i always have curiosity of getting an overview of their environment. So for this, i created below script which can give a high level overview of their Active Directory Environment.
Pre requisites :: Copy all the code into a text file, save it with an extension ".PS1". Once saved, run it as Administrator.
Execution & Outputs :: During execution, provide Client name when prompted. Output will be saved in a file named "Output.html" onto same location.
You will get to know about things like which all DC's are holding FSMO roles, Domain / Forest functional level, Total sites, Total Windows servers along with version wise count. #>
$client = Read-Host "Enter Client name = "
$detailOutput = "<html><body>
<h1>$client - Environment Info - $(Get-Date) </h1>
<table border=1 width=35% style='float: left'>"
$domaininfo = Get-ADDomain
$forestinfo = Get-ADForest
$detailOutput += "<tr>
<td width=15%><b>Fields</b></td>
<td width=20%><b>Values</b></td></tr>
<tr>
<td>Forest</td>
<td>$($domaininfo.Forest)</td></tr>
<tr>
<td>Root Domain</td>
<td>$($forestinfo.RootDomain)</td></tr>
<tr>
<td>Domain SID</td>
<td>$($domaininfo.DomainSID)</td></tr>
<tr>
<td>Forest Functional Level</td>
<td>$($forestinfo.ForestMode)</td></tr>
<tr>
<td>Domain Functional Level</td>
<td>$($domaininfo.DomainMode)</td></tr>
<tr>
<td>PDCEmulator Holder</td>
<td>$($domaininfo.PDCEmulator)</td></tr>
<tr>
<td>RIDMaster Holder</td>
<td>$($domaininfo.RIDMaster)</td></tr>
<tr>
<td>InfrastructureMaster Holder</td>
<td>$($domaininfo.InfrastructureMaster)</td></tr>
<tr>
<td>Schemamaster Holder</td>
<td>$($forestinfo.SchemaMaster)</td></tr>
<tr>
<td>DomainNamingMaster Holder</td>
<td>$($forestinfo.DomainNamingMaster)</td></tr>
<tr>
<td>Total Site count</td>
<td>$((Get-ADReplicationSite -Filter *).count)</td>
</tr>
"
$inventoryouput = "<table border=1 width=30% style='float: left;margin-left:100px'>"
$inventoryouput += "<tr>
<td><b>Fields</b></td>
<td><b>Values</b></td></tr>
<tr><td>Windows Servers Count</td>
<td>$((Get-ADComputer -Properties OperatingSystem -Filter {OperatingSystem -like "Windows Server*"}).count)</td></tr>
<tr><td>Domain Controllers Count </td>
<td>$((Get-ADDomainController -Filter *).count)</td></tr>"
$osflavours = Get-ADComputer -Properties OperatingSystem -Filter {OperatingSystem -like "Windows Server*"} | Select Operatingsystem -Unique
foreach($version in $osflavours)
{
$inventoryouput += "<tr><td>$($version.Operatingsystem)</td>"
$os = $((Get-ADComputer -Properties OperatingSystem -Filter * | ?{$_.Operatingsystem -eq $version.Operatingsystem})).Name
$inventoryouput += "<td>$($os.count)</td></tr>"
}
$detailOutput += "</table>"
$detailOutput | Out-File .\Output.html -Append
$inventoryouput += "</table></body></html>"
$inventoryouput | Out-File .\Output.html -Append