Remove a host file record
Next up is removing a record from a hosts file
function remove-hostfilecontent {
[CmdletBinding()]
param (
[parameter(Mandatory=$true)]
[ValidatePattern("\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b")]
[string]$IPAddress,
[parameter(Mandatory=$true)]
[string]$computer
)
$file = Join-Path -Path $($env:windir) -ChildPath "system32\drivers\etc\hosts"
if (-not (Test-Path -Path $file)){
Throw "Hosts file not found"
}
Write-Verbose "Remove IP Address"
$data = ((Get-Content -Path $file) -notmatch "$ip\s+$computer")
$data
Set-Content -Value $data -Path $file -Force -Encoding ASCII
}
Get an IP Address and computer as before. Create the path to the hosts file.
Read the files contents and perform a –notmatch using the IP Address and computername in the regular expression. \s+ means one or more white spaces. This removes the record we don’t want.
I managed to create a regular expression that works 
Then write the data back. normally I wouldn’t look at completely re-writing a file like this but the hosts file is small so its probably as quick and it makes the code really simple.