# PowerShell i Maguyva: kodegrafer til scripts og moduler

Canonical source: https://maguyva.ai/da/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 understøtter PowerShell med AST, symboler og graf, så AI-agenter kan følge funktioner, klasser og cmdlet-kald i scripts og moduler.

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Shell
- Filendelser: .ps1, .psd1, .psm1
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## 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.

## 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](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). For .NET-kode, som dine scripts kalder, kan du læse [guiden til C#](/da/languages/csharp).

## 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".
