193 lines
3.2 KiB
Markdown
193 lines
3.2 KiB
Markdown
# 🚀 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 "<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-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! 🚀
|