Files
PS-WorkingWithJSON/readme.md

2.9 KiB
Raw Permalink Blame History

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

💡 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.