Merge pull request #2 from FrauJulian/initial
This commit was merged in pull request #2.
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
google.com
|
||||
microsoft.com
|
||||
data.microsoft.com
|
||||
events.data.microsoft.com
|
||||
www.google.com
|
||||
office.com
|
||||
live.com
|
||||
windowsupdate.com
|
||||
ctldl.windowsupdate.com
|
||||
microsoftonline.com
|
||||
login.microsoftonline.com
|
||||
e2ro.com
|
||||
node.e2ro.com
|
||||
office.net
|
||||
settings-win.data.microsoft.com
|
||||
ecs.office.com
|
||||
officeapps.live.com
|
||||
skype.com
|
||||
digicert.com
|
||||
bing.com
|
||||
mobile.events.data.microsoft.com
|
||||
mp.microsoft.com
|
||||
edge.skype.com
|
||||
config.edge.skype.com
|
||||
update.googleapis.com
|
||||
windows.net
|
||||
office365.com
|
||||
teams.microsoft.com
|
||||
amazonaws.com
|
||||
clientservices.googleapis.com
|
||||
msn.com
|
||||
outlook.office365.com
|
||||
edge.microsoft.com
|
||||
safebrowsing.googleapis.com
|
||||
accounts.google.com
|
||||
apple.com
|
||||
doubleclick.net
|
||||
googleusercontent.com
|
||||
ocsp.digicert.com
|
||||
outlook.office.com
|
||||
www.bing.com
|
||||
dsp.mp.microsoft.com
|
||||
g.doubleclick.net
|
||||
do.dsp.mp.microsoft.com
|
||||
prod.do.dsp.mp.microsoft.com
|
||||
sharepoint.com
|
||||
graph.microsoft.com
|
||||
core.windows.net
|
||||
config.teams.microsoft.com
|
||||
facebook.com
|
||||
cdn.office.net
|
||||
login.live.com
|
||||
substrate.office.com
|
||||
play.google.com
|
||||
teams.events.data.microsoft.com
|
||||
assets.msn.com
|
||||
lencr.org
|
||||
c.lencr.org
|
||||
measure.office.net
|
||||
nel.measure.office.net
|
||||
x1.c.lencr.org
|
||||
self.events.data.microsoft.com
|
||||
pki.goog
|
||||
roaming.officeapps.live.com
|
||||
googleads.g.doubleclick.net
|
||||
googletagmanager.com
|
||||
www.googletagmanager.com
|
||||
clients6.google.com
|
||||
c.pki.goog
|
||||
windows.com
|
||||
cloudflare.com
|
||||
google-analytics.com
|
||||
fonts.googleapis.com
|
||||
youtube.com
|
||||
lh3.googleusercontent.com
|
||||
amazon.com
|
||||
optimizationguide-pa.googleapis.com
|
||||
clients4.google.com
|
||||
mtalk.google.com
|
||||
www.googleapis.com
|
||||
com.akadns.net
|
||||
www.google-analytics.com
|
||||
manage.microsoft.com
|
||||
azure.com
|
||||
browser.events.data.microsoft.com
|
||||
icloud.com
|
||||
measure.office.com
|
||||
smartscreen.microsoft.com
|
||||
fp.measure.office.com
|
||||
officeclient.microsoft.com
|
||||
config.office.net
|
||||
clients.config.office.net
|
||||
exo.nel.measure.office.net
|
||||
v10.events.data.microsoft.com
|
||||
content-autofill.googleapis.com
|
||||
www.youtube.com
|
||||
augloop.office.com
|
||||
aaplimg.com
|
||||
ls.apple.com
|
||||
upload.fp.measure.office.com
|
||||
File diff suppressed because it is too large
Load Diff
+10000
File diff suppressed because it is too large
Load Diff
+50000
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,111 @@
|
||||
# DNS Performance Test Script
|
||||
|
||||
This PowerShell script measures DNS query response times for a list of domains and outputs the results into a CSV file along with basic statistics.
|
||||
|
||||
## 📋 Table of Contents
|
||||
|
||||
* [Parameters](#-parameters)
|
||||
* [Installation](#-installation)
|
||||
* [Output](#-output)
|
||||
* [Statistics](#-statistics)
|
||||
* [Example](#-example)
|
||||
* [License](#-license)
|
||||
* [Author](#-author)
|
||||
|
||||
---
|
||||
|
||||
## ✅ Requirements
|
||||
|
||||
* PowerShell 5.1 or higher
|
||||
* Read access to a text file containing the list of domains (default: `Domains.txt`)
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Parameters
|
||||
|
||||
| Parameter | Type | Default | Description |
|
||||
| ------------------- | -------- | ------------- | ---------------------------------- |
|
||||
| `$DnsServer` | `string` | `1.1.1.1` | DNS server to query |
|
||||
| `$QueriesPerDomain` | `int` | `3` | Number of queries per domain |
|
||||
| `$DomainsFile` | `string` | `Domains.txt` | Path to the text file with domains |
|
||||
| `$ResultsFile` | `string` | `Results.csv` | Path for the output CSV file |
|
||||
|
||||
---
|
||||
|
||||
## 📥 Installation
|
||||
|
||||
1. Download or copy the script into a `.ps1` file.
|
||||
2. Adjust the parameters (especially file paths) if necessary.
|
||||
3. Create a `Domains.txt` file in the script directory and list the domains you want to test.
|
||||
|
||||
---
|
||||
|
||||
## ▶️ Usage
|
||||
|
||||
```powershell
|
||||
.\v1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📄 Output
|
||||
|
||||
* **CSV file** (`$ResultsFile`) with columns:
|
||||
|
||||
* `domain` — the queried domain name
|
||||
* `query` — the iteration number of the query
|
||||
* `response_ms` — response time in milliseconds, or `ERR` if the query failed
|
||||
* **Console output** showing each query result and final statistics.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Statistics
|
||||
|
||||
At the end of the script run, it prints:
|
||||
|
||||
* **Average**: average response time (ms)
|
||||
* **Shortest**: fastest response time (ms)
|
||||
* **Longest**: slowest response time (ms)
|
||||
|
||||
---
|
||||
|
||||
## 📑 Example
|
||||
|
||||
```powershell
|
||||
# Content of Domains.txt:
|
||||
example.com
|
||||
microsoft.com
|
||||
|
||||
# Execute the script
|
||||
.\v1.ps1
|
||||
|
||||
# Sample console output:
|
||||
[example.com] Query 1: 23.45 ms
|
||||
[example.com] Query 2: 22.87 ms
|
||||
[example.com] Query 3: 24.12 ms
|
||||
...
|
||||
==== Stats ====
|
||||
Average: 23.48 ms
|
||||
Shortest: 22.87 ms
|
||||
Longest: 24.12 ms
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 License
|
||||
|
||||
This script is licensed under the MIT License. See [LICENSE](LICENSE) for details.
|
||||
|
||||
---
|
||||
|
||||
## 👤 Contributors
|
||||
|
||||
- [Julian Lechner - FrauJulian](https://fraujulian.xyz)
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Enjoy?
|
||||
|
||||
Give it a star ⭐ on [github](https://github.com/FrauJulian/DNS-Tester)!
|
||||
|
||||
### Greetings from Austria! ⛰️
|
||||
@@ -0,0 +1,44 @@
|
||||
param(
|
||||
[string]$DnsServer = '1.1.1.1',
|
||||
[int] $QueriesPerDomain = 3,
|
||||
[string]$DomainsFile = 'Domains.txt',
|
||||
[string]$ResultsFile = 'Results.csv'
|
||||
)
|
||||
|
||||
if (-not (Test-Path $DomainsFile)) {
|
||||
Write-Error "Domains-File '$DomainsFile' not found."
|
||||
exit 1
|
||||
}
|
||||
$domains = Get-Content $DomainsFile
|
||||
|
||||
"domain,query,response_ms" | Out-File -FilePath $ResultsFile -Encoding UTF8
|
||||
|
||||
foreach ($domain in $domains) {
|
||||
for ($i = 1; $i -le $QueriesPerDomain; $i++) {
|
||||
$sw = [System.Diagnostics.Stopwatch]::StartNew()
|
||||
try {
|
||||
Resolve-DnsName -Name $domain -Server $DnsServer -ErrorAction Stop | Out-Null
|
||||
$sw.Stop()
|
||||
$ms = [math]::Round($sw.Elapsed.TotalMilliseconds, 2)
|
||||
}
|
||||
catch {
|
||||
$sw.Stop()
|
||||
$ms = 'ERR'
|
||||
}
|
||||
|
||||
Write-Host "[$domain] Query $($i): $($ms) ms"
|
||||
"$($domain),$($i),$($ms)" | Out-File -FilePath $ResultsFile -Append -Encoding UTF8
|
||||
}
|
||||
}
|
||||
|
||||
$results = Import-Csv $ResultsFile | Where-Object { $_.response_ms -ne 'ERR' } `
|
||||
| Select-Object @{n='response_ms';e={[double]$_.response_ms}}
|
||||
$avg = [math]::Round(($results | Measure-Object response_ms -Average).Average,2)
|
||||
$min = ($results | Measure-Object response_ms -Minimum).Minimum
|
||||
$max = ($results | Measure-Object response_ms -Maximum).Maximum
|
||||
|
||||
Write-Host ''
|
||||
Write-Host "==== Stats ===="
|
||||
Write-Host "Average: $avg ms"
|
||||
Write-Host "Shortest: $min ms"
|
||||
Write-Host "Longest: $max ms"
|
||||
Reference in New Issue
Block a user