Import-Module ActiveDirectory
$enc = New-Object System.Text.utf8encoding
$objetoBosque = Get-ADForest
$objetoDominio = Get-ADDomain
$bosque = $objetoBosque.Name
$dominio = $objetoDominio.Name
$nfuncbosque = $objetoBosque.ForestMode
$nfuncdominio = $objetoDominio.DomainMode
$fsmodomain = $objetoBosque.DomainNamingMaster
$fsmoSchema = $objetoBosque.SchemaMaster
$fsmoRID = $objetoDominio.RIDMaster
$fsmoInfra = $objetoDominio.InfrastructureMaster
$fsmoPDC = $objetoDominio.PDCEmulator
$configNCDN = (Get-ADRootDSE).ConfigurationNamingContext
$siteContainerDN = ("CN=Sites," + $configNCDN)
$sitios=Get-ADObject -SearchBase $siteContainerDN -filter { objectClass -eq "site" } -properties *
$htmlsitios = @"
"@
$htmlsubnets = @"
"@
foreach ($sitio in $sitios) {
$aux0=$sitio.Name
$htmlsitios = @"
$htmlsitios
<tr><td>Nombre del Sitio de Active Directory</td><td>$aux0</td></tr>
"@
$htmlsubnet = @"
"@
$siteDN = "CN=" + $sitio.Name + "," + $siteContainerDN
$siteObj = Get-ADObject -Identity $siteDN -properties "siteObjectBL", "description", "location"
foreach ($subnetDN in $siteObj.siteObjectBL) {
$subnet=Get-ADObject -Identity $subnetDN -properties "siteObject", "description", "location"
$aux1=$subnet.location
$aux2=$subnet.description
$aux3=$subnet.name
$htmlsubnet = @"
$htmlsubnet
<tr><td>$aux3</td><td>$aux1</td><td>$aux2</td><td>$aux0</td></tr>
"@
}
$htmlsubnets = @"
$htmlsubnet
"@
}
$htmldomaincontrollers = @"
"@
$dcs = Get-ADDomainController -Filter *
foreach($dc in $dcs)
{
$aux0=$dc.hostname
$aux1=$dc.site
$aux2=$dc.isglobalcatalog
$aux3=$dc.ipv4address
$aux4=$dc.operatingSystem
$aux5=$dc.OperatingSystemServicePack
$memorias=Get-WmiObject -class Win32_PhysicalMemory -ComputerName $dc.hostname
$aux6=$null
foreach ($memoria in $memorias) {
$aux6+=$memoria.capacity
}
$aux6=$aux6/ 1GB -as [int]
$dispalmacenamiento=Get-WmiObject -class Win32_LogicalDisk -ComputerName $dc.hostname
$htmlvolumenes=@"
<table border="1">
<tr><td>Unidad</td><td>Descripcion</td><td>Tamaño Total(GB)</td><td>Espacio Ocupado(GB)</td><td>Espacio Libre(GB)</td><td>Sistema de Archivos</td></tr>
"@
foreach ($device in $dispalmacenamiento) {
if ($device.Description -eq "Local Fixed Disk") {
$aux7=$device.name
$aux8=$device.Description
$aux9=$device.Size/1GB -as [int]
$aux10=$device.size/1GB -as [int]
$aux11=$device.freespace/1GB -as [int]
$aux12=$device.filesystem
$htmlvolumenes=@"
$htmlvolumenes
<tr><td>$aux7</td><td>$aux8</td><td>$aux9</td><td>$aux10</td><td>$aux11</td><td>$aux12</td></tr>
"@
}
$procesadores=Get-WmiObject -class Win32_Processor -ComputerName $dc.hostname
$htmlProcesadores=@"
<table border="1">
<tr><td>Nombre</td><td>Fabricante</td><td>Numero de Cores</td><td>Numero de Procesadores Logicos</td></tr>
"@
foreach ($procesador in $procesadores) {
$aux13=$procesador.name
$aux14=$procesador.Manufacturer
$aux15=$procesador.NumberofCores
$aux16=$procesador.NumberofLogicalProcessors
$htmlProcesadores=@"
$htmlProcesadores
<tr><td>$aux13</td><td>$aux14</td><td>$aux15</td><td>$aux16</td></tr>
"@
}
}
$htmldomaincontrollers = @"
$htmldomaincontrollers
<tr><td>$aux0</td><td>$aux1</td><td>$aux2</td><td>$aux3</td><td>$aux4</td><td>$aux5</td><td>$htmlprocesadores</table></td><td>$aux6</td><td>$htmlvolumenes</table></td></tr>
"@
}
$body = @"
<center><h1><b>Informacion del Dominio</h1><br></center>
<br>
<h3><b>Datos Generales</h3>
<table border="2">
<tr><td>Bosque:<b></td><td>$bosque<b></td></tr>
<tr><td>Dominio:<b></td><td>$dominio<b></td></tr>
<tr><td>Nivel Funcional de Bosque:<b></td><td>$nfuncbosque<b></td></tr>
<tr><td>Nivel Funcional de Dominio:<b></td><td>$nfuncdominio<b></td></tr>
</table>
<h3><b>Roles FSMO</h3>
<table border="2">
<tr><td>Schema Master:<b></td><td>$fsmoSchema<b></td></tr>
<tr><td>Domain Naming Master:<b></td><td>$fsmodomain<b></td></tr>
<tr><td>PDC Emulator:<b></td><td>$fsmoPDC<b></td></tr>
<tr><td>Infrastructure Master:<b></td><td>$fsmoinfra<b></td></tr>
<tr><td>RID Master:<b></td><td>$fsmoRID<b></td></tr>
</table>
<h3><b>Sitios</h3>
<table border="2">
$htmlsitios
</table>
<h3><b>Subnets</h3>
<table border="2">
<tr><td>Subnet<b></td><td>Ubicacion<b></td></td><td>Descripcion<b></td></td><td>Sitio<b></td></tr>
$htmlsubnets
</table>
<h3><b>Controladores de Dominio</h3>
<table border="2">
<tr><td>Nombre<b></td><td>Sitio<b></td></td><td>Catalogo Global<b></td></td><td>direccion IP<b></td><td>Sistema Operativo<b></td><td>Service Pack<b></td><td>Procesadores<b></td><td>RAM(GB)<b></td><td>Volumenes<b></td></tr>
$htmldomaincontrollers
</table>
<br>
Desde ya es un placer chequear esta característica, para ayudarle a brindar un mejor servicio IT.<br>
<br>
Saludos cordiales,<br>
"@
convertTo-HTML -body $body | Out-File c:\ReporteAD.html
#send-mailmessage -to buzon@dominio.local -from "Nombre <email>" -Subject "Reporte inicio sesion computadoras" -body $body -smtpserver servidor_de_correo -Encoding $enc -BodyAsHtml
$enc = New-Object System.Text.utf8encoding
$objetoBosque = Get-ADForest
$objetoDominio = Get-ADDomain
$bosque = $objetoBosque.Name
$dominio = $objetoDominio.Name
$nfuncbosque = $objetoBosque.ForestMode
$nfuncdominio = $objetoDominio.DomainMode
$fsmodomain = $objetoBosque.DomainNamingMaster
$fsmoSchema = $objetoBosque.SchemaMaster
$fsmoRID = $objetoDominio.RIDMaster
$fsmoInfra = $objetoDominio.InfrastructureMaster
$fsmoPDC = $objetoDominio.PDCEmulator
$configNCDN = (Get-ADRootDSE).ConfigurationNamingContext
$siteContainerDN = ("CN=Sites," + $configNCDN)
$sitios=Get-ADObject -SearchBase $siteContainerDN -filter { objectClass -eq "site" } -properties *
$htmlsitios = @"
"@
$htmlsubnets = @"
"@
foreach ($sitio in $sitios) {
$aux0=$sitio.Name
$htmlsitios = @"
$htmlsitios
<tr><td>Nombre del Sitio de Active Directory</td><td>$aux0</td></tr>
"@
$htmlsubnet = @"
"@
$siteDN = "CN=" + $sitio.Name + "," + $siteContainerDN
$siteObj = Get-ADObject -Identity $siteDN -properties "siteObjectBL", "description", "location"
foreach ($subnetDN in $siteObj.siteObjectBL) {
$subnet=Get-ADObject -Identity $subnetDN -properties "siteObject", "description", "location"
$aux1=$subnet.location
$aux2=$subnet.description
$aux3=$subnet.name
$htmlsubnet = @"
$htmlsubnet
<tr><td>$aux3</td><td>$aux1</td><td>$aux2</td><td>$aux0</td></tr>
"@
}
$htmlsubnets = @"
$htmlsubnet
"@
}
$htmldomaincontrollers = @"
"@
$dcs = Get-ADDomainController -Filter *
foreach($dc in $dcs)
{
$aux0=$dc.hostname
$aux1=$dc.site
$aux2=$dc.isglobalcatalog
$aux3=$dc.ipv4address
$aux4=$dc.operatingSystem
$aux5=$dc.OperatingSystemServicePack
$memorias=Get-WmiObject -class Win32_PhysicalMemory -ComputerName $dc.hostname
$aux6=$null
foreach ($memoria in $memorias) {
$aux6+=$memoria.capacity
}
$aux6=$aux6/ 1GB -as [int]
$dispalmacenamiento=Get-WmiObject -class Win32_LogicalDisk -ComputerName $dc.hostname
$htmlvolumenes=@"
<table border="1">
<tr><td>Unidad</td><td>Descripcion</td><td>Tamaño Total(GB)</td><td>Espacio Ocupado(GB)</td><td>Espacio Libre(GB)</td><td>Sistema de Archivos</td></tr>
"@
foreach ($device in $dispalmacenamiento) {
if ($device.Description -eq "Local Fixed Disk") {
$aux7=$device.name
$aux8=$device.Description
$aux9=$device.Size/1GB -as [int]
$aux10=$device.size/1GB -as [int]
$aux11=$device.freespace/1GB -as [int]
$aux12=$device.filesystem
$htmlvolumenes=@"
$htmlvolumenes
<tr><td>$aux7</td><td>$aux8</td><td>$aux9</td><td>$aux10</td><td>$aux11</td><td>$aux12</td></tr>
"@
}
$procesadores=Get-WmiObject -class Win32_Processor -ComputerName $dc.hostname
$htmlProcesadores=@"
<table border="1">
<tr><td>Nombre</td><td>Fabricante</td><td>Numero de Cores</td><td>Numero de Procesadores Logicos</td></tr>
"@
foreach ($procesador in $procesadores) {
$aux13=$procesador.name
$aux14=$procesador.Manufacturer
$aux15=$procesador.NumberofCores
$aux16=$procesador.NumberofLogicalProcessors
$htmlProcesadores=@"
$htmlProcesadores
<tr><td>$aux13</td><td>$aux14</td><td>$aux15</td><td>$aux16</td></tr>
"@
}
}
$htmldomaincontrollers = @"
$htmldomaincontrollers
<tr><td>$aux0</td><td>$aux1</td><td>$aux2</td><td>$aux3</td><td>$aux4</td><td>$aux5</td><td>$htmlprocesadores</table></td><td>$aux6</td><td>$htmlvolumenes</table></td></tr>
"@
}
$body = @"
<center><h1><b>Informacion del Dominio</h1><br></center>
<br>
<h3><b>Datos Generales</h3>
<table border="2">
<tr><td>Bosque:<b></td><td>$bosque<b></td></tr>
<tr><td>Dominio:<b></td><td>$dominio<b></td></tr>
<tr><td>Nivel Funcional de Bosque:<b></td><td>$nfuncbosque<b></td></tr>
<tr><td>Nivel Funcional de Dominio:<b></td><td>$nfuncdominio<b></td></tr>
</table>
<h3><b>Roles FSMO</h3>
<table border="2">
<tr><td>Schema Master:<b></td><td>$fsmoSchema<b></td></tr>
<tr><td>Domain Naming Master:<b></td><td>$fsmodomain<b></td></tr>
<tr><td>PDC Emulator:<b></td><td>$fsmoPDC<b></td></tr>
<tr><td>Infrastructure Master:<b></td><td>$fsmoinfra<b></td></tr>
<tr><td>RID Master:<b></td><td>$fsmoRID<b></td></tr>
</table>
<h3><b>Sitios</h3>
<table border="2">
$htmlsitios
</table>
<h3><b>Subnets</h3>
<table border="2">
<tr><td>Subnet<b></td><td>Ubicacion<b></td></td><td>Descripcion<b></td></td><td>Sitio<b></td></tr>
$htmlsubnets
</table>
<h3><b>Controladores de Dominio</h3>
<table border="2">
<tr><td>Nombre<b></td><td>Sitio<b></td></td><td>Catalogo Global<b></td></td><td>direccion IP<b></td><td>Sistema Operativo<b></td><td>Service Pack<b></td><td>Procesadores<b></td><td>RAM(GB)<b></td><td>Volumenes<b></td></tr>
$htmldomaincontrollers
</table>
<br>
Desde ya es un placer chequear esta característica, para ayudarle a brindar un mejor servicio IT.<br>
<br>
Saludos cordiales,<br>
"@
convertTo-HTML -body $body | Out-File c:\ReporteAD.html
#send-mailmessage -to buzon@dominio.local -from "Nombre <email>" -Subject "Reporte inicio sesion computadoras" -body $body -smtpserver servidor_de_correo -Encoding $enc -BodyAsHtml