2.9 KiB
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
{
"groups": {
"TU": [
{ "name": "server1" },
{ "name": "server2" }
],
"AU": [
{ "name": "server3" }
]
}
}
🔧 Funktionen
Get-ServerConfig
Lädt die JSON-Konfigurationsdatei.
Get-ServerConfig
Parameter:
-Path(optional): Pfad zur JSON-Datei (Standard:.\servers.json)
Get-ServerGroup
Gibt alle Server einer bestimmten Gruppe zurück.
Get-ServerGroup -Name TU
Parameter:
-Name(Pflicht): Name der Gruppe
Invoke-ServerCommand
Führt ein PowerShell-Skript auf allen Servern einer Gruppe aus.
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).
Invoke-ServerCommandParallel -Group TU -ScriptBlock { hostname }
🚀 Beispiele
Hostnamen abrufen
Invoke-ServerCommand -Group TU -ScriptBlock { hostname }
Dienststatus prüfen
Invoke-ServerCommand -Group TU -ScriptBlock {
Get-Service -Name Spooler
}
Festplatten prüfen
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
- WinRM aktiviert (
💡 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.