# ServerTools – PowerShell Server Group Automation ## 📖 Übersicht Dieses PowerShell-Skript ermöglicht die einfache Verwaltung und Automatisierung von Servern anhand definierter Gruppen in einer JSON-Konfigurationsdatei. Ziel ist es, administrative Aufgaben effizient auf mehrere Server gleichzeitig auszuführen, ohne Servernamen manuell pflegen zu müssen. --- ## ⚙️ Funktionsweise Die Server werden in einer JSON-Datei in Gruppen organisiert. Das Skript stellt Funktionen bereit, um: * Servergruppen auszulesen * Befehle auf ganze Gruppen anzuwenden * Remote-Kommandos zentral auszuführen --- ## 📂 Projektstruktur ``` ServerTools/ ├── ServerTools.psm1 └── servers.json ``` --- ## 🧾 Konfigurationsdatei ### Beispiel: `servers.json` ```json { "groups": { "TU": [ { "name": "server1" }, { "name": "server2" } ], "AU": [ { "name": "server3" } ] } } ``` --- ## 🔧 Funktionen ### `Get-ServerConfig` Lädt die JSON-Konfigurationsdatei. ```powershell Get-ServerConfig ``` **Parameter:** * `-Path` (optional): Pfad zur JSON-Datei (Standard: `.\servers.json`) --- ### `Get-ServerGroup` Gibt alle Server einer bestimmten Gruppe zurück. ```powershell Get-ServerGroup -Name TU ``` **Parameter:** * `-Name` (Pflicht): Name der Gruppe --- ### `Invoke-ServerCommand` Führt ein PowerShell-Skript auf allen Servern einer Gruppe aus. ```powershell Invoke-ServerCommand -Group TU -ScriptBlock { hostname } ``` **Parameter:** * `-Group` (Pflicht): Gruppenname * `-ScriptBlock` (Pflicht): Auszuführender Code --- ### `Invoke-ServerCommandParallel` (optional) Führt Befehle parallel auf mehreren Servern aus (PowerShell 7+ erforderlich). ```powershell Invoke-ServerCommandParallel -Group TU -ScriptBlock { hostname } ``` --- ## 🚀 Beispiele ### Hostnamen abrufen ```powershell Invoke-ServerCommand -Group TU -ScriptBlock { hostname } ``` --- ### Dienststatus prüfen ```powershell Invoke-ServerCommand -Group TU -ScriptBlock { Get-Service -Name Spooler } ``` --- ### Festplatten prüfen ```powershell Invoke-ServerCommand -Group TU -ScriptBlock { Get-PSDrive C } ``` --- ## ⚠️ Voraussetzungen * PowerShell 5.1 oder höher * Für Remote-Befehle: * WinRM aktiviert (`Enable-PSRemoting`) * Netzwerkzugriff auf Zielsysteme * Entsprechende Berechtigungen --- ## 💡 Best Practices * Verwende sprechende Gruppennamen (z. B. `Prod-Web`, `Test-DB`) * Halte die JSON-Datei versioniert (z. B. Git) * Nutze Module (`.psm1`) für Wiederverwendbarkeit * Teste Skripte zunächst auf einzelnen Servern --- ## 🔮 Erweiterungsmöglichkeiten * Integration von Credentials * Logging und Fehlerauswertung * Tag-basiertes System (flexiblere Filterung) * API-Anbindung oder CMDB-Integration --- ## 🧠 Fazit Dieses Skript bietet eine einfache, aber leistungsstarke Grundlage zur Automatisierung von Serveraufgaben in PowerShell und kann flexibel erweitert werden. ---