171 lines
2.9 KiB
Markdown
171 lines
2.9 KiB
Markdown
# 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.
|
||
|
||
---
|