Script para cambiar Tabla Host

 Hellow hellow


Necesitas cambiar el contenido de la tabla host de tus usuarios? este script te puede servir de base. Controlas en un array las ip y nombres. Sirve para agregar, y también para actualizar IP de nombres existentes en tu lista. Permite mantener el contenido actual de la tabla host, sin afectarlo.

salud por eso!

#
#CAda vez que se cambia listado de IP, hay que cambiar número de versión y hacer ajustes en Microsoft Intune
#Si este archivo existe, no realiza cambios. Si el archivo no existe, ejecuta el script.
$ArchivoValidacion = "C:\tools\hostversion1.txt"
$validarVersion = Test-path -path $ArchivoValidacion -PathType Leaf
if($validarVersion){break}
"Control de versiones" | out-file $ArchivoValidacion
#lista de elementos a agregar
$hostvpn = @( 
    [pscustomobject]@{IP='10.18.200.28';Name='misitioweb.com'} 
[pscustomobject]@{IP='91.119.0.1';Name='guagua'} 
[pscustomobject]@{IP='91.41.0.1';Name='miaumiau'} 
[pscustomobject]@{IP='192.168.1.64';Name='qacbt.example.cl'}
)
#funciones
function RemoverLinea($lineaRem,$archivomem){
#remover
$archivomem =$archivomem | where {$_ -ne $lineaRem}
return $archivomem
}
function AgregarLinea($linea,$archivomem){
#agregar
#$newarchivo =$archivomem + $linea | out-string
$archivomem += $linea
return $archivomem
}
#abrir archivo host
$rutahost = $env:systemroot+"\system32\drivers\etc\hosts"
$hostfile = Get-content $rutahost
$nuevohost = $hostfile
#
#leer cada linea de hostvpn. 
$servidores=$hostvpn.count
for($i=0;$i -lt $servidores;$i++){
$nohallado=$true
#por cada linea revisa en el archivo hostfile
foreach($entry in $hostfile){
#si encuentra la linea, la actualiza
$h1 = $entry -split '\s+'     #separa la ip del nombre incluyendo espacios o tabs multiples
if($h1.count -ge 2){
if($h1[1] -eq $hostvpn.Name[$i]){
if($h1[0] -eq $hostvpn.IP[$i]){
#write-host -foregroundcolor green $entry
$entry | out-file $ArchivoValidacion -Append
$nohallado=$false

}else{
#si la ip es diferente lo quita del archivo
#write-host -foregroundcolor yellow $entry
$nuevohost = RemoverLinea $entry $nuevohost
"Quitar: "+$entry | out-file $ArchivoValidacion -Append
}
}
}

}
#si no la encuentra o la cambió, agrega la linea al final
if($nohallado){
$agregar=$hostvpn.IP[$i]+"`t"+$hostvpn.Name[$i]
#write-host -foregroundcolor red $agregar
$nuevohost = AgregarLinea $agregar $nuevohost
"Agregar: "+$agregar | out-file $ArchivoValidacion -Append
}

}
#escribir nuevo host
$nuevohost | out-file $rutahost
#$nuevohost

Comments

Popular posts from this blog

Update DNS static servers in your local Network

Error 'General access denied error' (0x80070005). Starting SCVMM Resource

Powershell Scritp for Inventory VMS in Hyper-V and VMware