-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
It'd be cool to have a PowerShell script to pull the latest copy periodically. #28
Comments
Feel free to submit one! The permanent location is |
Something like this one? ;-) |
Here you go. $hostsRequest = (Invoke-Webrequest -Uri "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts")
$currentDate = ((get-date).ToUniversalTime()).ToString("dd-MM-yyyy hh-mm-ss")
$filePath = "C:\Windows\System32\drivers\etc\host-{0}.{1}"
if($hostsRequest.StatusCode -eq 200){
$captureDomainRegex = "^(?:\d{1}\.\d{1}\.\d{1}.\d{1} )(.+)"
$hosts = [PsCustomObject]@{unique=@(); duplicate=@();}
$hostsRequest.Content | out-file -filepath ($filePath -f $currentDate, "txt")
foreach ($line in Get-Content ($filePath -f $currentDate, "txt")){
if($line -match $captureDomainRegex) {
if($hosts.unique -contains $matches[1]){
$hosts.duplicate += $matches[1]
}else{
$hosts.unique += $matches[1]
}
}
}
ConvertTo-Json $hosts | out-file -filepath ($filePath -f $currentDate, "json")
}
#load json and get the count of unique entries
#(Get-Content ($filePath -f $currentDate, "json") | ConvertFrom-Json).unique.Count This would create host.txt wherever your path is set to, then it will read that file and create {
"unique": [
"0koryu0.easter.ne.jp",
"1-atraffickim.tf",
"10-trafficimj.tf",
"109-204-26-16.netconnexion.managedbroadband.co.uk",
"11-atraasikim.tf",
"11.lamarianella.info",
"12-tgaffickvcmb.tf",
"13-ctscfficim.tf",
"alsoknowsit.com"
],
"duplicate": [
"11-atraasikim.tf",
"11.lamarianella.info"
]
}
|
This one seems to work for me. You can run it with task scheduler for periodically updates. # Create temp folder..
New-Item -ItemType Directory -Force -Path 'C:\Hosts\'
Set-Location C:\Hosts\
wget 'https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts' -OutFile hosts
# Clean up and remove dublicates ..
Get-Content hosts | Where { $_ -notmatch "\#" } | Where {$_.trim() -ne " " } | Sort-Object -Unique | Set-Content final
# Back-up and Update hostsfile..
Copy-Item -Recurse "C:\Windows\System32\drivers\etc\hosts" -Destination "C:\Windows\System32\drivers\etc\hosts.bak"
Copy-Item -Recurse ".\final" -Destination "C:\Windows\System32\drivers\etc\hosts"
# FlushDNS..
CMD.EXE /C "ipconfig /flushdns"
Write-Host "`nHosts File Updated" -ForegroundColor Green
rm .\final -Recurse |
$hosts = "$env:windir\System32\drivers\etc\hosts" Invoke-WebRequest -Uri https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -OutFile $hosts |
Does it count if it's not PowerShell? |
@Sn0wflake Invoke-WebRequest works only from a specific version of powershell and I have seen that on Windows Server 2008 it doesn't by default. |
Closing this now. This is an old issue, and Windows is too fragmented. Folks are of course free to automate their own workflows. |
No description provided.
The text was updated successfully, but these errors were encountered: