# 🚀 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 `.env` Datei 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 ```powershell .\dein-script.ps1 ``` --- ## 🧠 Funktionsweise ### 🔐 Laden der Umgebungsvariablen Das Script liest die `.env` Datei und setzt die enthaltenen Variablen in die aktuelle PowerShell-Session: ```powershell [System.Environment]::SetEnvironmentVariable($name, $value) ``` --- ### 🌍 API Request Abruf der NEO-Daten über die NASA API: ```powershell Invoke-RestMethod -Uri "" -ResponseHeadersVariable headers ``` * JSON wird automatisch in PowerShell-Objekte konvertiert * Response-Header werden separat gespeichert --- ### 📊 Rate Limit Anzeige Folgende Header werden ausgewertet: * `X-RateLimit-Limit` * `X-RateLimit-Remaining` Ausgabe: ``` ------------- Rate Limit: 1000 Remaining : 742 ------------- ``` --- ### ☄️ Verarbeitung der Asteroiden-Daten Die API liefert Daten gruppiert nach Datum: ```json "near_earth_objects": { "2026-01-01": [ ... ] } ``` Das Script iteriert dynamisch über alle Datumswerte: ```powershell $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: ```powershell catch { Write-Host "Fehler: $($_.Exception.Message)" } ``` --- ## 💡 Hinweise & Best Practices * 🔒 `.env` Datei nicht in Git committen (`.gitignore`) * 🔁 API Rate Limits beachten * 📅 Datum kann angepasst werden: ```powershell $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! 🚀