Ir al contenido principal

Script Powershell que genera reporte de Active Directory

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

Entradas más populares de este blog

Solución de Problemas en la Migración del DataCollector de MMA a Azure ARC

  Síntomas Observados Error al Ejecutar Comandos: Al intentar ejecutar los comandos: Import-Module "C:\ODA\Binaries\bin\Microsoft.PowerShell.Oms.Assessments\Microsoft.PowerShell.Oms.Assessments" .\run.cmd Se obtiene el mensaje de error: "ExecPkg not found. File WindowsServerAssessment.execpkg". Ubicación Incorrecta del Archivo WindowsServerAssessment.execpkg: El archivo necesario se encuentra en una ubicación diferente a la esperada: C:\Packages\Plugins\Microsoft.ServicesHub.WindowsServerAssessment\1.7\bin Falta de Estructura de Carpeta Esperada: La carpeta esperada,  C:\ODA\Packages , no existe en el sistema. Errores Registrados en los Logs: En los registros (logs) del sistema se reporta el error: "Missing Mandatory file OmsAssessment.exe". Pasos para Solucionar los Problemas 1. Desinstalación del Microsoft Monitoring Agent (MMA) y Eliminación de Variables de Entorno Desinstala completamente el MMA asegurándote de eliminar todo el software relacionado. Ve...

Crear servidor Ansible

Servidor Ansible Comenzamos instalando un sistema operativo CentOS 7 minimal, podemos hacerlo sobre una maquina virtual Hyper-V, Vmware o en la nube. En Centos 7 instalación mínima por defecto no se tiene conexión a la red dado que las interfaces ethernet no vienen habilitadas de forma predeterminada. Ejecutar comando " nmcli d " para un listado rápido de las interfaces de red instaladas en el equipo. Ejecutar el comando " nmtui " para abrir el Network manager Editar las interfaces y configurar en automático IPv4 y marcar la opción "Conectar de forma automática"  para obtener dirección IP desde un servidor DHCP. Ejecutar " Service Network Restart " Instalar el repositorio EPEL para Centos 7 Ejecutar " yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm " Instalar ansible Ejecutar " yum install ansible " Ejecutar " yum install python-pip " Ejecutar " pip inst...

Implementacion WordPress en Azure

Teniendo una cuenta en Azure, es muy fácil hacer una implementacion de WordPress. Estando el el portal de Azure, seleccionamos crear nuevo recurso y buscamos la palabra WordPress. Nos aparece la opción de crear un recurso WordPress WEB que es el que vamos a probar en este post. Luego de creado el recurso vamos a ver que se crearon los siguientes sub recursos: Un APP Service  y una Base de datos MySQL. Y dentro del APP service la URL para instalar el servicio de WordPress creado. Y esta pronto!!! Ya podes disfrutar de tu sitio de WordPress. Saludos!!!!