Hoppa till innehåll
cd /languages
  • Windows-automatisering
  • Skal
  • Stöd för AST och symboler

PowerShell i Maguyva: kodgrafer för skript och moduler

Maguyva stöder PowerShell med AST, symboler och graf, så att AI-agenter kan följa funktioner, klasser och cmdlet-anrop i skript och moduler.

Där PowerShell får ytliga AI-verktyg att snubbla

Dina funktioner och de inbyggda cmdletarna följer samma namnstil. Get-Invoice och Get-ChildItem ser likadana ut, så ett verktyg som sorterar bort “inbyggda” kommandon efter verb slänger även dina egna funktioner. Skript blandar dessutom kod på modulnivå, funktioner, klasser och skriptblock i en och samma fil, vilket gör det svårt att se vilken funktion en rad hör till.

Maguyva behåller båda sorters anrop och knyter varje anrop till funktionen där det står.

Vad Maguyva extraherar i PowerShell

Maguyva täcker .ps1-, .psm1- och .psd1-filer. Funktioner och klassmetoder extraheras som anropbara enheter, och klasser och enums som typer. Skript- och metodparametrar följs, och läsningar och skrivningar inne i en funktion knyts till den funktionen i stället för till modulen.

Cmdlet-anrop ligger kvar i grafen. PowerShell tillämpar inte det standardbiblioteksfilter som de flesta språk använder, så Write-Host, Get-ChildItem och Restart-Service visas som anropskanter bredvid dina egna Get-*- och Set-*-funktioner. En agent kan fråga vilka skript som startar om en tjänst, eller vilka funktioner som skriver till konsolen, och få ett strukturellt svar.

För PowerShell är ingen relationstyp markerad som ej tillämplig, så grafen registrerar också klassarv och gränssnittsimplementering, instansiering, kontrollflöde samt läsningar och skrivningar.

Exempel på prompter för agenter

  • “Vem anropar Invoke-Backup, och från vilka schemalagda skript?” (find_symbol, sedan dependency_search incoming)
  • “Vilka funktioner anropar Restart-Service?” (dependency_search)
  • “Spåra vad Deploy-Site gör från början till slut.” (get_task_context)

Kända begränsningar

  • Eftersom cmdlet-anrop behålls har mycket vanliga cmdletar som Write-Host och Select-Object väldigt många inkommande kanter. Börja från din egen funktion när du vill ha en fokuserad anropsgraf.
  • Import-Module och dot-sourcing är vanliga kommandon, så presetet imports i structural_search väljer ingenting. Använd text_pattern_search för att lista dem.

Nästa steg

Anslut ett repo med snabbstarten och kontrollera sedan stödmatrisen på kompatibilitetssidan. För .NET-kod som dina skript anropar, läs guiden för C#.

Bäst lämpad för

  • > Infrastruktur- och driftteam med stora samlingar `.ps1`- och `.psm1`-filer vars skript anropar varandras funktioner.
  • > PowerShell-moduler byggda av avancerade funktioner, klasser och enums.
  • > Automatiseringsrunbooks där agenter före en ändring måste se vilka skript som rör en tjänst, en filresurs eller en registernyckel.

Agentarbetsflöden

  • > Hitta alla anropare av en avancerad funktion innan dess parametrar ändras.
  • > Lista vilka skript som anropar en cmdlet som `Restart-Service` innan en runbook ändras.
  • > Kartlägga vilka funktioner som skriver till en delad variabel innan en modul refaktoreras.

Motordetaljer

  • > PowerShell-stödet omfattar `.ps1`, `.psm1` och `.psd1`. Funktioner och klassmetoder är anropbara enheter, och klasser och enums är typer.
  • > Standardbiblioteksfiltret är avstängt för PowerShell, så cmdlet-anrop som `Get-ChildItem` ligger kvar i grafen bredvid dina egna funktioner.
  • > Läsningar och skrivningar inne i en funktion knyts till den funktionen i stället för till modulen.

Användbara MCP-ingångar

  • find_symbol

    Använd det för en avancerad funktion eller klass när du behöver definitionen och anroparna.

  • dependency_search

    Använd incoming-traversering på en cmdlet som `Restart-Service` för att se vilka skript som anropar den.

  • get_task_context

    Använd det för prompter som "spåra vad `Deploy-Site` gör från början till slut".