# PowerShell i Maguyva: kodegrafer for skript og moduler

Canonical source: https://maguyva.ai/nb/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 støtter PowerShell med AST, symboler og graf, slik at AI-agenter kan følge funksjoner, klasser og cmdlet-kall i skript og moduler.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Shell
- Filendelser: .ps1, .psd1, .psm1
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- Infrastruktur- og driftsteam med store samlinger av `.ps1`- og `.psm1`-filer der skriptene kaller hverandres funksjoner.
- PowerShell-moduler bygget av avanserte funksjoner, klasser og enums.
- Automatiseringsrunbooks der agenter før en endring må se hvilke skript som berører en tjeneste, en filressurs eller en registernøkkel.

## Agent-arbeidsflyter

- Finne alle kallere av en avansert funksjon før parameterne endres.
- Liste hvilke skript som kaller en cmdlet som `Restart-Service` før en runbook endres.
- Kartlegge hvilke funksjoner som skriver til en delt variabel før en modul refaktoreres.

## Der PowerShell får overfladiske AI-verktøy til å snuble

Funksjonene dine og de innebygde cmdletene følger samme navnestil. `Get-Invoice` og `Get-ChildItem` ser like ut, så et verktøy som luker bort «innebygde» kommandoer etter verb, kaster også dine egne funksjoner. Skript blander dessuten kode på modulnivå, funksjoner, klasser og skriptblokker i én fil, noe som gjør det vanskelig å se hvilken funksjon en linje hører til.

Maguyva beholder begge typer kall og knytter hvert kall til funksjonen det står i.

## Hva Maguyva henter ut i PowerShell

Maguyva dekker `.ps1`-, `.psm1`- og `.psd1`-filer. Funksjoner og klassemetoder hentes ut som kallbare enheter, og klasser og enums som typer. Skript- og metodeparametere følges, og lesinger og skrivinger inne i en funksjon knyttes til den funksjonen i stedet for modulen.

Cmdlet-kall blir værende i grafen. PowerShell bruker ikke standardbibliotekfilteret som de fleste språk har, så `Write-Host`, `Get-ChildItem` og `Restart-Service` vises som kallkanter ved siden av dine egne `Get-*`- og `Set-*`-funksjoner. En agent kan spørre hvilke skript som starter en tjeneste på nytt, eller hvilke funksjoner som skriver til konsollen, og få et strukturelt svar.

For PowerShell er ingen relasjonstype merket som ikke relevant, så grafen registrerer også klassearv og grensesnittimplementasjon, instansiering, kontrollflyt og lesinger og skrivinger.

## Eksempler på prompter for agenter

- «Hvem kaller `Invoke-Backup`, og fra hvilke planlagte skript?» (`find_symbol`, deretter `dependency_search` incoming)
- «Hvilke funksjoner kaller `Restart-Service`?» (`dependency_search`)
- «Spor hva `Deploy-Site` gjør fra start til slutt.» (`get_task_context`)

## Kjente begrensninger

- Fordi cmdlet-kall beholdes, har svært vanlige cmdleter som `Write-Host` og `Select-Object` veldig mange innkommende kanter. Start fra din egen funksjon når du vil ha en fokusert kallgraf.
- `Import-Module` og dot-sourcing er vanlige kommandoer, så presetet `imports` i `structural_search` velger ingenting. Bruk `text_pattern_search` for å liste dem.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). For .NET-kode som skriptene dine kaller, bør du lese [veiledningen for C#](/nb/languages/csharp).

## Motordetaljer

- PowerShell-støtten dekker `.ps1`, `.psm1` og `.psd1`. Funksjoner og klassemetoder er kallbare enheter, og klasser og enums er typer.
- Standardbibliotekfilteret er slått av for PowerShell, så cmdlet-kall som `Get-ChildItem` blir værende i grafen ved siden av dine egne funksjoner.
- Lesinger og skrivinger inne i en funksjon knyttes til den funksjonen i stedet for modulen.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Bruk det for en avansert funksjon eller klasse når du trenger definisjonen og kallerne.
- `dependency_search`: Bruk incoming-traversering på en cmdlet som `Restart-Service` for å se hvilke skript som kaller den.
- `get_task_context`: Bruk det for prompter som «spor hva `Deploy-Site` gjør fra start til slutt».
