Finally the help of IT is here

Blog de soluciones informaticas.

Script Powershell para sacar listado por HTML de los parches en WSUS.

Posteado por Xavier Xaus Nadal on 20th Octubre 2010

Vaya título más largo no???.

Aquí os dejo un script creado por Albert Fortes y modificado por mí que realiza lo siguiente:

Este script se conecta localmente a nuestro servidor WSUS y realiza una consulta y una suma del resultado de parches NotInstalled, Downloaded y Failed de cada equipo y genera un archivo .html con el nombre del equipo, parches ordenados por el resultado de parches necesarios y último contacto y lo almacena en un fichero llamado ReportWsus_dia_mes_año_NombredeServidor.html ubicado en una carpeta de red que le indicaremos en la variable $ruta.

El Script es el siguiente:

[reflection.assembly]::LoadWithPartialName(“Microsoft.UpdateServices.Administration”)

 

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer(“localhost”,$false);

$Computers = $wsus.GetComputerTargets()

$ruta=\\<servidor_donde_guardar_el_report>

$computername=gc env:computername

$FileOutput=get-date -uformat “ReportWsus_%d_%m_%Y_$computername.html”

$Report=@()

$total=$Computers.Count

$i=0

 

clear host

 

foreach( $computer in $Computers)

{  

$UpdateSummary=${computer}.GetUpdateInstallationSummary()

$Count=$UpdateSummary.NotInstalledCount + $UpdateSummary.DownloadedCount + $UpdateSummary.FailedCount

$Report_element = new-object psobject

$Report_element | add-member NoteProperty “Computer” ${computer}.FullDomainName

$Report_element | add-member NoteProperty “NeededUpdates” $Count

$Report_element | add-member NoteProperty “LastUpdateSync” ${computer}.LastSyncTime.ToString()

$Report+=$Report_element

$i=$i+1

$Percent=($i/$total*100)

Write-Progress -Activity “WSUS query…” `

-Status “Espera un poco mas.” -CurrentOperation (“Complete $i/$total” ) -PercentComplete ($i/$total*100)

}

 

Clear host

 

$Report | sort NeededUpdates | ConvertTo-Html | Out-File -FilePath “$ruta$FileOutput”

Este script lo podéis guardar en un fichero .ps1 dentro del servidor WSUS y ejecutarlo desde powershell. Incluso podéis crear una tarea programada que ejecute este programa y que generará el fichero en una ruta de red cada día para que vuestro equipo de seguridad pueda disponer de un report donde poder ver a que equipos les faltan cuantos parches.

Curiosidades del script:

Como conseguir el código de equipo en powershell?: Usar el comando gc env:computername

 

Como generar un fichero con la fecha formateada?: $fileoutput=get-date –uformat “texto %d %m %Y “  con esto conseguiremos obtener “texto 20 10 2010” al hacer un pipeline de Out-File a una variable nueva llamada por ejemplo $Report y pasándole como parametro –FilePath “$FileOutput” conseguiremos tener un fichero formateado como queremos.

Si tenéis cualquier problema o dudáis en algo por favor mandadme un comentario y os los solventaré encantado.

Hasta pronto MegaCracks

Tags: , , , , , , , , , , ,
Posteado por PowerShell, Programación, Windows Update Services | 2 Comments »