-
-
Save MarcosBL/3e55ac49f425546f58353160abe57ac9 to your computer and use it in GitHub Desktop.
Powershell script for adding/removing/viewing entries to the hosts file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Powershell script for adding/removing/showing entries to the hosts file. | |
# | |
# Known limitations: | |
# - does not handle entries with comments afterwards ("<ip> <host> # comment") | |
# | |
$file = "C:\Windows\System32\drivers\etc\hosts" | |
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 | |
} | |
} | |
# Write file | |
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] | |
} | |
} | |
} | |
try { | |
if ($args[0] -eq "add") { | |
if ($args.count -lt 3) { | |
throw "Not enough arguments for add." | |
} else { | |
add-host $file $args[1] $args[2] | |
} | |
} elseif ($args[0] -eq "remove") { | |
if ($args.count -lt 2) { | |
throw "Not enough arguments for remove." | |
} else { | |
remove-host $file $args[1] | |
} | |
} elseif ($args[0] -eq "show") { | |
print-hosts $file | |
} else { | |
throw "Invalid operation '" + $args[0] + "' - must be one of 'add', 'remove', 'show'." | |
} | |
} catch { | |
Write-Host $error[0] | |
Write-Host "`nUsage: hosts add <ip> <hostname>`n hosts remove <hostname>`n hosts show" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment