# PowerShell in Maguyva: Code-Graphen für Skripte und Module

Canonical source: https://maguyva.ai/de/languages/powershell

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva unterstützt PowerShell mit AST, Symbolen und Graph, damit KI-Agenten Funktionen, Klassen und Cmdlet-Aufrufe über Skripte und Module hinweg verfolgen.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Shell
- Dateiendungen: .ps1, .psd1, .psm1
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- Infrastruktur- und Betriebsteams mit großen `.ps1`- und `.psm1`-Beständen, deren Skripte gegenseitig Funktionen aufrufen.
- PowerShell-Module aus Advanced Functions, Klassen und Enums.
- Automatisierungs-Runbooks, bei denen Agenten vor einer Änderung sehen müssen, welche Skripte einen Dienst, eine Dateifreigabe oder einen Registry-Schlüssel berühren.

## Agentenabläufe

- Alle Aufrufer einer Advanced Function finden, bevor sich ihre Parameter ändern.
- Auflisten, welche Skripte ein Cmdlet wie `Restart-Service` aufrufen, bevor sich ein Runbook ändert.
- Vor dem Refactoring eines Moduls abbilden, welche Funktionen in eine gemeinsame Variable schreiben.

## Wo PowerShell oberflächliche KI-Tools ins Stolpern bringt

Deine Funktionen und die eingebauten Cmdlets folgen demselben Namensschema. `Get-Invoice` und `Get-ChildItem` sehen gleich aus, also wirft ein Tool, das „eingebaute“ Befehle nach Verb aussortiert, deine eigenen Funktionen gleich mit weg. Skripte mischen außerdem Code auf Modulebene, Funktionen, Klassen und Skriptblöcke in einer Datei, sodass schwer zu erkennen ist, zu welcher Funktion eine Zeile gehört.

Maguyva behält beide Arten von Aufrufen und ordnet jeden der Funktion zu, in der er steht.

## Was Maguyva in PowerShell extrahiert

Maguyva deckt `.ps1`-, `.psm1`- und `.psd1`-Dateien ab. Funktionen und Klassenmethoden werden als Callables extrahiert, Klassen und Enums als Typen. Skript- und Methodenparameter werden verfolgt, und Lese- und Schreibzugriffe innerhalb einer Funktion werden dieser Funktion zugeordnet statt dem Modul.

Cmdlet-Aufrufe bleiben im Graphen. PowerShell nutzt den Standardbibliotheks-Filter nicht, den die meisten Sprachen verwenden, daher erscheinen `Write-Host`, `Get-ChildItem` und `Restart-Service` als Aufrufkanten neben deinen eigenen `Get-*`- und `Set-*`-Funktionen. Ein Agent kann fragen, welche Skripte einen Dienst neu starten oder welche Funktionen in die Konsole schreiben, und erhält eine strukturelle Antwort.

Für PowerShell ist kein Beziehungstyp als nicht anwendbar markiert, daher erfasst der Graph außerdem Klassenvererbung und Interface-Implementierung, Instanziierung, Kontrollfluss sowie Lese- und Schreibzugriffe.

## Beispiel-Prompts für Agenten

- „Wer ruft `Invoke-Backup` auf, und aus welchen geplanten Skripten?“ (`find_symbol`, dann `dependency_search` incoming)
- „Welche Funktionen rufen `Restart-Service` auf?“ (`dependency_search`)
- „Verfolge, was `Deploy-Site` von Anfang bis Ende tut.“ (`get_task_context`)

## Bekannte Grenzen

- Weil Cmdlet-Aufrufe erhalten bleiben, haben sehr häufige wie `Write-Host` und `Select-Object` eine große Zahl eingehender Kanten. Beginne bei deiner eigenen Funktion, wenn du einen fokussierten Aufrufgraphen willst.
- `Import-Module` und Dot-Sourcing sind gewöhnliche Befehle, daher wählt das Preset `imports` in `structural_search` nichts aus. Verwende `text_pattern_search`, um sie aufzulisten.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Für .NET-Code, den deine Skripte aufrufen, lies den [C#-Leitfaden](/de/languages/csharp).

## Engine-Einordnung

- Die PowerShell-Unterstützung umfasst `.ps1`, `.psm1` und `.psd1`. Funktionen und Klassenmethoden sind Callables, Klassen und Enums sind Typen.
- Für PowerShell ist der Standardbibliotheks-Filter ausgeschaltet, daher bleiben Cmdlet-Aufrufe wie `Get-ChildItem` neben deinen eigenen Funktionen im Graphen.
- Lese- und Schreibzugriffe innerhalb einer Funktion werden dieser Funktion zugeordnet statt dem Modul.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es für eine Advanced Function oder Klasse, wenn du Definition und Aufrufer brauchst.
- `dependency_search`: Nutz die eingehende Traversierung auf einem Cmdlet wie `Restart-Service`, um zu sehen, welche Skripte es aufrufen.
- `get_task_context`: Nutz es für Prompts wie „verfolge, was `Deploy-Site` von Anfang bis Ende tut“.
