# PowerShell i Maguyva: kodgrafer för skript och moduler

Canonical source: https://maguyva.ai/sv/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öder PowerShell med AST, symboler och graf, så att AI-agenter kan följa funktioner, klasser och cmdlet-anrop i skript och moduler.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Skal
- Filändelser: .ps1, .psd1, .psm1
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

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

## 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](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). För .NET-kod som dina skript anropar, läs [guiden för C#](/sv/languages/csharp).

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