# Get-Services PowerShell Modul ## 📖 Beschreibung Die Funktion **Get-Services** dient dazu, Windows-Dienste auszulesen, zu filtern und optional zu exportieren. Sie ermöglicht: * Filtern nach **DisplayName** * Filtern nach **Status** * Ausgabe als strukturierte Objekte (PSCustomObject) * Export als **JSON** oder **CSV** --- ## ⚙️ Funktionsweise Die Funktion liest alle Dienste über `Get-Service` aus und speichert relevante Informationen in einem strukturierten Objekt: * Name * DisplayName * Status Anschließend erfolgt eine Filterung basierend auf den übergebenen Parametern. Optional können die Ergebnisse exportiert werden. --- ## 📥 Parameter | Parameter | Typ | Beschreibung | | ------------- | ------ | --------------------------------------------------------------- | | `-searchName` | string | Filtert nach DisplayName (Wildcard möglich, Standard: `*`) | | `-status` | string | Filtert nach Status (z. B. `Running`, `Stopped`, Standard: `*`) | | `-export` | string | Exportformat (`json` oder `csv`) | | `-path` | string | Pfad für den Export (Pflicht, wenn `-export` gesetzt ist) | --- ## ⚠️ Abhängigkeiten Wenn der Parameter `-export` verwendet wird, **muss auch `-path` angegeben werden**, andernfalls wird ein Fehler ausgelöst: ``` Wenn -export verwendet wird, muss auch -path angegeben werden. ``` --- ## 🚀 Beispiele ### 🔍 Alle Services anzeigen ```powershell Get-Services ``` --- ### 🔎 Nach Namen filtern ```powershell Get-Services -searchName "*xbox*" ``` --- ### 📊 Nur laufende Services anzeigen ```powershell Get-Services -status "Running" ``` --- ### 📁 Export als JSON ```powershell Get-Services -searchName "*xbox*" -export json -path "C:\temp\services.json" ``` --- ### 📄 Export als CSV ```powershell Get-Services -status "Running" -export csv -path "C:\temp\services.csv" ``` --- ## 📤 Rückgabewert Die Funktion gibt ein Array von **PSCustomObjects** zurück: ```powershell Name : Spooler DisplayName : Druckwarteschlange Status : Running ``` Diese können direkt weiterverarbeitet werden: ```powershell Get-Services | Where-Object { $_.Status -eq "Running" } ``` --- ## 🧠 Hinweise * Wildcards (`*`) werden unterstützt * Die Filterung erfolgt nach dem Einlesen aller Services * Export erfolgt aktuell unabhängig vom `-path` Parameter (Verbesserungspotential) --- ## 🔧 Verbesserungsideen * Nutzung von `-path` im Export implementieren * Performance verbessern (Verzicht auf `+=`) * Direkte Filterung in der Pipeline statt nachträglich * Validierung für `-export` (z. B. nur `json` oder `csv` erlauben) --- ## 📌 Fazit Die Funktion eignet sich ideal für: * schnelle Service-Analysen * Reporting * Automatisierung * Export von Service-Zuständen ---