simple server administration with server infos stored in json
This commit is contained in:
170
readme.md
Normal file
170
readme.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# 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.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user