-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathRemove-HostFileEntry.ps1
80 lines (62 loc) · 2.09 KB
/
Remove-HostFileEntry.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<#
$Metadata = @{
Title = "Remove Host File Entry"
Filename = "Remove-HostFileEntry.ps1"
Description = ""
Tags = "powershell, function, host, file, manipulation"
Project = ""
Author = "Janik von Rotz"
AuthorContact = "http://janikvonrotz.ch"
CreateDate = "2013-07-10"
LastEditDate = "2013-09-30"
Version = "1.1.0"
License = @'
This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/ or
send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
'@
}
#>
function Remove-HostFileEntry{
<#
.SYNOPSIS
Add an new entry to the hosts file
.DESCRIPTION
Add an new entry the hosts file.
.PARAMETER IP
IP address
.PARAMETER DNS
DNS address
.EXAMPLE
PS C:\> Get-HostFileEntry -IP "192.168.50.4" -DNS "local.wordpress.dev"
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$false)]
[String]
$IP,
[Parameter(Mandatory=$false)]
[String]
$DNS
)
#--------------------------------------------------#
# main
#--------------------------------------------------#
$HostFile = "$env:windir\System32\drivers\etc\hosts"
get-content $HostFile | %{
if($_.StartsWith("#") -or $_ -eq ""){
$Content += $_ + "`n"
}else{
$HostIP = ([regex]"(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))").match($_).value
$HostDNS = ($_ -replace $HostIP, "") -replace '\s+',""
if($HostIP -eq $IP -or $HostDNS -eq $DNS){
Write-Host "Remove host file entry: "$(if($IP){$IP + " "}else{})$(if($DNS){$DNS})
}else{
$Content += $_ + "`n"
}
}
}
Set-Content -Path $HostFile -Value $Content
# reformat hostfile
Set-Content -Path $HostFile -Value (Get-Content -Path $HostFile | %{if($_.StartsWith("#") -or $_ -ne ""){$_}})
}