Files
PS-WorkingWithJSON/readme.md

171 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
---