Naar inhoud springen
cd /languages
  • Windows-automatisering
  • Shell
  • AST- en symboolondersteuning

PowerShell in Maguyva: codegrafen voor scripts en modules

Maguyva ondersteunt PowerShell met AST, symbolen en graaf, zodat AI-agents functies, klassen en cmdlet-aanroepen volgen in scripts en modules.

Waar PowerShell oppervlakkige AI-tools laat struikelen

Je eigen functies en de ingebouwde cmdlets volgen dezelfde naamgeving. Get-Invoice en Get-ChildItem zien er hetzelfde uit, dus een tool die “ingebouwde” commando’s op werkwoord wegfiltert, gooit je eigen functies ook weg. Scripts mengen bovendien code op moduleniveau, functies, klassen en scriptblokken in één bestand, waardoor moeilijk te zien is bij welke functie een regel hoort.

Maguyva houdt beide soorten aanroepen vast en wijst elke aanroep toe aan de functie waarin hij staat.

Wat Maguyva in PowerShell extraheert

Maguyva dekt .ps1-, .psm1- en .psd1-bestanden. Functies en klassemethoden worden als callables geëxtraheerd, klassen en enums als types. Script- en methodeparameters worden gevolgd, en lees- en schrijfacties binnen een functie worden aan die functie toegewezen in plaats van aan de module.

Cmdlet-aanroepen blijven in de graaf. PowerShell past het standaardbibliotheekfilter dat de meeste talen gebruiken niet toe, dus Write-Host, Get-ChildItem en Restart-Service verschijnen als aanroepedges naast je eigen Get-*- en Set-*-functies. Een agent kan vragen welke scripts een service herstarten, of welke functies naar de console schrijven, en krijgt een structureel antwoord.

Voor PowerShell is geen relatietype als niet van toepassing gemarkeerd, dus de graaf legt ook klasse-overerving en interface-implementatie, instantiatie, control flow en lees- en schrijfacties vast.

Voorbeeldprompts voor agents

  • “Wie roept Invoke-Backup aan, en vanuit welke geplande scripts?” (find_symbol, daarna dependency_search incoming)
  • “Welke functies roepen Restart-Service aan?” (dependency_search)
  • “Volg wat Deploy-Site van begin tot eind doet.” (get_task_context)

Bekende beperkingen

  • Omdat cmdlet-aanroepen behouden blijven, hebben zeer gangbare zoals Write-Host en Select-Object enorm veel inkomende edges. Begin bij je eigen functie als je een gerichte aanroepgraaf wilt.
  • Import-Module en dot-sourcing zijn gewone commando’s, dus de preset imports in structural_search selecteert niets. Gebruik text_pattern_search om ze op te sommen.

Volgende stappen

Koppel een repository via de snelstart en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Lees voor .NET-code die je scripts aanroepen de C#-gids.

Beste toepassing

  • > Infrastructuur- en operationsteams met grote verzamelingen `.ps1`- en `.psm1`-bestanden waarvan de scripts elkaars functies aanroepen.
  • > PowerShell-modules opgebouwd uit advanced functions, klassen en enums.
  • > Automatiseringsrunbooks waarbij agents vóór een wijziging moeten zien welke scripts een service, een bestandsshare of een registersleutel raken.

Agentworkflows

  • > Alle aanroepers van een advanced function vinden voordat de parameters veranderen.
  • > Opsommen welke scripts een cmdlet zoals `Restart-Service` aanroepen voordat een runbook verandert.
  • > In kaart brengen welke functies naar een gedeelde variabele schrijven voordat een module wordt gerefactord.

Enginedetails

  • > PowerShell-ondersteuning omvat `.ps1`, `.psm1` en `.psd1`. Functies en klassemethoden zijn callables, klassen en enums zijn types.
  • > Voor PowerShell staat het standaardbibliotheekfilter uit, dus cmdlet-aanroepen zoals `Get-ChildItem` blijven in de graaf naast je eigen functies.
  • > Lees- en schrijfacties binnen een functie worden aan die functie toegewezen in plaats van aan de module.

Nuttige MCP-instappunten

  • find_symbol

    Gebruik het voor een advanced function of klasse wanneer je de definitie en aanroepers nodig hebt.

  • dependency_search

    Gebruik incoming-traversal op een cmdlet zoals `Restart-Service` om te zien welke scripts hem aanroepen.

  • get_task_context

    Gebruik het voor prompts als "volg wat `Deploy-Site` van begin tot eind doet."