Spring til indhold
cd /languages
  • Windows-automatisering
  • Shell
  • AST- og symbolunderstøttelse

PowerShell i Maguyva: kodegrafer til scripts og moduler

Maguyva understøtter PowerShell med AST, symboler og graf, så AI-agenter kan følge funktioner, klasser og cmdlet-kald i scripts og moduler.

Hvor PowerShell får overfladiske AI-værktøjer til at snuble

Dine funktioner og de indbyggede cmdlets følger samme navnestil. Get-Invoice og Get-ChildItem ligner hinanden, så et værktøj, der sorterer “indbyggede” kommandoer fra efter verbum, smider også dine egne funktioner ud. Scripts blander desuden kode på modulniveau, funktioner, klasser og scriptblokke i én fil, så det er svært at se, hvilken funktion en linje hører til.

Maguyva beholder begge slags kald og knytter hvert kald til den funktion, det står i.

Hvad Maguyva udtrækker i PowerShell

Maguyva dækker .ps1-, .psm1- og .psd1-filer. Funktioner og klassemetoder udtrækkes som kaldbare enheder, og klasser og enums som typer. Script- og metodeparametre følges, og læsninger og skrivninger inde i en funktion knyttes til den funktion i stedet for til modulet.

Cmdlet-kald bliver i grafen. PowerShell anvender ikke det standardbiblioteksfilter, som de fleste sprog bruger, så Write-Host, Get-ChildItem og Restart-Service vises som kaldkanter ved siden af dine egne Get-*- og Set-*-funktioner. En agent kan spørge, hvilke scripts der genstarter en service, eller hvilke funktioner der skriver til konsollen, og få et strukturelt svar.

For PowerShell er ingen relationstype markeret som ikke relevant, så grafen registrerer også klassenedarvning og interface-implementering, instansiering, kontrolflow samt læsninger og skrivninger.

Eksempler på prompts til agenter

  • “Hvem kalder Invoke-Backup, og fra hvilke planlagte scripts?” (find_symbol, derefter dependency_search incoming)
  • “Hvilke funktioner kalder Restart-Service?” (dependency_search)
  • “Spor hvad Deploy-Site gør fra start til slut.” (get_task_context)

Kendte begrænsninger

  • Fordi cmdlet-kald beholdes, har meget almindelige cmdlets som Write-Host og Select-Object rigtig mange indgående kanter. Start fra din egen funktion, når du vil have en fokuseret kaldgraf.
  • Import-Module og dot-sourcing er almindelige kommandoer, så presettet imports i structural_search vælger intet. Brug text_pattern_search til at liste dem.

Næste skridt

Tilslut et repository med hurtigstarten, og se derefter understøttelsesmatricen på kompatibilitetssiden. For .NET-kode, som dine scripts kalder, kan du læse guiden til C#.

Bedst egnet til

  • > Infrastruktur- og driftsteams med store samlinger af `.ps1`- og `.psm1`-filer, hvis scripts kalder hinandens funktioner.
  • > PowerShell-moduler bygget af avancerede funktioner, klasser og enums.
  • > Automatiseringsrunbooks, hvor agenter før en ændring skal se, hvilke scripts der rører en service, et fildelingsdrev eller en registreringsnøgle.

Agent-arbejdsgange

  • > Finde alle kaldere af en avanceret funktion, før dens parametre ændres.
  • > Liste hvilke scripts der kalder en cmdlet som `Restart-Service`, før en runbook ændres.
  • > Kortlægge hvilke funktioner der skriver til en delt variabel, før et modul refaktoreres.

Motordetaljer

  • > PowerShell-understøttelsen dækker `.ps1`, `.psm1` og `.psd1`. Funktioner og klassemetoder er kaldbare enheder, og klasser og enums er typer.
  • > Standardbiblioteksfilteret er slået fra for PowerShell, så cmdlet-kald som `Get-ChildItem` bliver i grafen ved siden af dine egne funktioner.
  • > Læsninger og skrivninger inde i en funktion knyttes til den funktion i stedet for til modulet.

Nyttige MCP-indgange

  • find_symbol

    Brug det til en avanceret funktion eller klasse, når du har brug for definitionen og kalderne.

  • dependency_search

    Brug incoming-traversering på en cmdlet som `Restart-Service` for at se, hvilke scripts der kalder den.

  • get_task_context

    Brug det til prompts som "spor hvad `Deploy-Site` gør fra start til slut".