Compartilhar via


Atualizando Arquivos Hosts Remotamente

Hoje tive a necessidade de incluir algumas URLs nos arquivos Hosts das máquinas, pois muitos utilizam o “Cisco VPN Client” que altera a ordem de consulta dos sufixos DNS, causando assim alguns problemas com Outlook por exemplo. Mas como fazer isso?

Este script é muito simples, ele simplesmente lê o arquivo remotamente de cada Computador do AD, carrega na memória, procura se o FQDN existe, e se não existir inclui, isso simplesmente não causa problemas para o usuário caso ele tenha incluído algum endereço.

Para utilizar basta substituir os valores nas últimas linhas pelo que deseja adicionar.

Ex:
Desejo adicionar o FQDN site.teste.com.br com o IP 10.0.0.1

add-host $file 10.0.0.1 site.teste.com.br

Write-Host "Add 10.0.0.1 site.teste.com.br on $maq"

OBS: Para que o script funcione você precisa executar com privilégios administrativos.

 

function add-host([string]$filename, [string]$ip, [string]$hostname)

{

remove-host $filename $hostname

$ip + "`t`t" + $hostname | Out-File -encoding ASCII -append $filename

}

function remove-host([string]$filename, [string]$hostname)

{

$c = Get-Content $filename

$newLines = @()

foreach ($line in $c)

{

$bits = [regex]::Split($line, "\t+")

if ($bits.count -eq 2)

{

if ($bits[1] -ne $hostname)

{

$newLines += $line

}

}

else

{

$newLines += $line

}

}

Clear-Content $filename

foreach ($line in $newLines)

{

$line | Out-File -encoding ASCII -append $filename

}

}

function print-hosts([string]$filename)

{

$c = Get-Content $filename

foreach ($line in $c)

{

$bits = [regex]::Split($line, "\t+")

if ($bits.count -eq 2)

{

Write-Host $bits[0] `t`t $bits[1]

}

}

}

$Comp = Get-ADComputer -SearchBase "OU=Computers,DC=domain,DC=net" -Filter *

foreach ($Computer in $Comp)

{

$maq = $Computer.name

$file = "\$maq\c$\windows\system32\Drivers\etc\hosts"

$adminpath = Test-Path "\$maq\admin$"

If ($adminpath -eq "True")

{

Write-Host "$maq\admin$ is OK"

add-host $file 192.168.1.1 mail.domain.net

Write-Host "Add 192.168.1.1 mail.domain.net on $maq"

add-host $file 192.168.1.2 sip.domain.net

Write-Host "Add 192.168.1.2 sip.domain.net on $maq"

}

}