2017-09-08 4 views
0

Pour une raison quelconque, l'un de nos clients a beaucoup de problèmes pour vous connecter à notre ftp, principale raison étant qu'il ne peut pas résoudre notre nom d'hôte (via IP sans problème)Mise à jour le fichier hôte pour mettre à jour la dernière entrée sur la base Hostname

J'ai regardé autour de moi et j'ai trouvé ce code pour ajouter une ligne au bas de mon fichier hôte (mais ça ne fonctionne pas, il sort tout le fichier hôte dans son intégralité)

Quelqu'un peut-il expliquer comment je peux changer cela? Il est aller chercher l'adresse IP parfaitement, juste besoin soit de supprimer les lignes non commentées sur le fichier hôte ou supprimer la dernière IP

$targethost="HOSTNAME" 
$dnsserver="8.8.8.8" 
$pattern = '^*' + $targethost + '.*$' 
$file = "$($env:SystemRoot)\System32\drivers\etc\hosts" 
$ip = Resolve-DnsName -Name $targethost -Type A -DnsOnly -Server $dnsserver 
$hosts = Get-Content -Path $file 

$hosts = $hosts | Foreach { 
    if ($_ -match $pattern) 
    { 
     $ip.IpAddress + " HOSTNAME " 
    } 
    else 
    { 
    # Keep current line 
    $_ 
    } 
} 

#Uncomment this line to just view the output, no harm is done to the hosts file. 
$hosts 


# Uncomment this line to actually write the hosts file. Elevated privileges required. 
#$hosts | Out-File $file -enc ASCII 
+0

'# Débranchez ce lin e pour écrire réellement le fichier hosts. Privilèges élevés requis. »Prenez le' # 'tout en bas du fichier. – ConnorLSW

+0

Ce qu'il a dit ^^. –

+0

Évidemment, j'ai essayé, ne pompe toujours pas dans le fichier OU l'affiche à l'écran. –

Répondre

0

Essayez

$hosts | Out-File -Encoding Ascii -append $file 

ou

$hosts | Add-Content $file #(ASCII by default) 
0

un Janky , mais cela fonctionne

Clear-Content c:\windows\System32\drivers\etc\hosts 
Set-Content -Path c:\windows\System32\drivers\etc\hosts -Value "Hello, World" 
$targethost="HOSTNAME" 
$dnsserver="8.8.8.8" 
$pattern = '^*' + $targethost + '.*$' 
$file = "$($env:SystemRoot)\System32\drivers\etc\hosts" 
$ip = Resolve-DnsName -Name $targethost -Type A -DnsOnly -Server $dnsserver 
$hosts = Get-Content -Path $file 

$hosts = $hosts | Foreach { 
    if ($_ -match $pattern) 
    { 
     # Keep current line 
    $_ 

    } 
    else 
    { 
    $ip.IpAddress + " HOSTNAME " 
    } 
} 

#Uncomment this line to just view the output, no harm is done to the hosts file. 
$hosts 


# Uncomment this line to actually write the hosts file. Elevated privileges required. 
$hosts | Out-File $file -enc ASCII