Initial v1 #2
@@ -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(
|
||||||
|
The comment contains German text 'Domains einlesen' which should be in English for consistency. Consider changing to '# Read domains'. The comment contains German text 'Domains einlesen' which should be in English for consistency. Consider changing to '# Read domains'.
```suggestion
# Read domains
```
|
|||||||
|
[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
The command uses 'dotnet-script' which is incorrect for PowerShell execution. It should be '.\DNSPerformanceTest.ps1' or 'powershell DNSPerformanceTest.ps1'.