🚀 NASA Near Earth Objects (NEO) PowerShell Script
Dieses PowerShell-Script ruft Daten der NASA Near Earth Object (NEO) API ab, verarbeitet die Ergebnisse und zeigt relevante Informationen zu Asteroiden an.
📌 Features
-
🔐 API-Key aus
.envDatei laden -
🌍 Abruf von Asteroiden-Daten über die NASA API
-
📊 Anzeige von:
- Name des Asteroiden
- Gefährlichkeit (Hazardous)
- Entfernung zur Erde (Miss Distance)
-
⚠️ Farbliche Hervorhebung:
- Rot = potenziell gefährlich
- Grün = nicht gefährlich
-
📉 Anzeige des API Rate Limits
📁 Voraussetzungen
- PowerShell 5.1 oder höher (empfohlen: PowerShell 7+)
- Internetverbindung
- NASA API Key
👉 API Key hier erstellen: https://api.nasa.gov/
⚙️ Setup
1. .env Datei erstellen
Erstelle im gleichen Verzeichnis eine .env Datei:
API_KEY=dein_api_key_hier
2. Script ausführen
.\dein-script.ps1
🧠 Funktionsweise
🔐 Laden der Umgebungsvariablen
Das Script liest die .env Datei und setzt die enthaltenen Variablen in die aktuelle PowerShell-Session:
[System.Environment]::SetEnvironmentVariable($name, $value)
🌍 API Request
Abruf der NEO-Daten über die NASA API:
Invoke-RestMethod -Uri "<API-URL>" -ResponseHeadersVariable headers
- JSON wird automatisch in PowerShell-Objekte konvertiert
- Response-Header werden separat gespeichert
📊 Rate Limit Anzeige
Folgende Header werden ausgewertet:
X-RateLimit-LimitX-RateLimit-Remaining
Ausgabe:
-------------
Rate Limit: 1000
Remaining : 742
-------------
☄️ Verarbeitung der Asteroiden-Daten
Die API liefert Daten gruppiert nach Datum:
"near_earth_objects": {
"2026-01-01": [ ... ]
}
Das Script iteriert dynamisch über alle Datumswerte:
$response.near_earth_objects.PSObject.Properties
🎨 Konsolen-Ausgabe
Für jeden Asteroiden werden folgende Informationen angezeigt:
- Name
- Gefährlich (True/False)
- Entfernung zur Erde (km)
Farbliche Darstellung:
- 🔴 Rot → gefährlich
- 🟢 Grün → ungefährlich
🖥️ Beispielausgabe
Datum: 2026-01-01
-------------------
| Name: (2000 KX43) --- Hazardous: False
| Miss-Distance(in KM): 7458392
---------------------
| Name: (422686) --- Hazardous: True
| Miss-Distance(in KM): 3849201
---------------------
⚠️ Fehlerbehandlung
Das Script nutzt try/catch, um API-Fehler abzufangen:
catch {
Write-Host "Fehler: $($_.Exception.Message)"
}
💡 Hinweise & Best Practices
- 🔒
.envDatei nicht in Git committen (.gitignore) - 🔁 API Rate Limits beachten
- 📅 Datum kann angepasst werden:
$startDate = "2026-01-01"
$endDate = "2026-01-07"
🚀 Erweiterungsmöglichkeiten
- Export als CSV oder JSON
- Automatische Pagination (
links.next) - Filter nach Entfernung oder Größe
- Logging statt
Write-Host - Umwandlung in PowerShell Modul
🏁 Fazit
Dieses Script bietet einen einfachen Einstieg in:
- Arbeiten mit REST APIs in PowerShell
- JSON-Verarbeitung
- Nutzung von Umgebungsvariablen
- Konsolenbasierte Datenvisualisierung
Happy scripting! 🚀