# PowerShell in Maguyva: grafi del codice per script e moduli

Canonical source: https://maguyva.ai/it/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 supporta PowerShell con AST, simboli e grafo, così gli agenti IA seguono funzioni, classi e chiamate a cmdlet in script e moduli.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Shell
- Estensioni: .ps1, .psd1, .psm1
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- Team di infrastruttura e operations con grandi patrimoni di `.ps1` e `.psm1` i cui script si chiamano a vicenda le funzioni.
- Moduli PowerShell costruiti con funzioni avanzate, classi ed enum.
- Runbook di automazione in cui gli agenti devono vedere quali script toccano un servizio, una condivisione di file o una chiave di registro prima di una modifica.

## Workflow degli agenti

- Trovare tutti i chiamanti di una funzione avanzata prima di cambiarne i parametri.
- Elencare quali script chiamano un cmdlet come `Restart-Service` prima di cambiare un runbook.
- Mappare quali funzioni scrivono in una variabile condivisa prima di rifattorizzare un modulo.

## Dove PowerShell fa inciampare gli strumenti di IA superficiali

Le tue funzioni e i cmdlet integrati seguono lo stesso stile di denominazione. `Get-Invoice` e `Get-ChildItem` sembrano uguali, quindi uno strumento che scarta i comandi "integrati" in base al verbo butta via anche le tue funzioni. Gli script mescolano inoltre codice a livello di modulo, funzioni, classi e blocchi di script in un unico file, ed è difficile capire a quale funzione appartenga una riga.

Maguyva mantiene entrambi i tipi di chiamata e attribuisce ciascuna alla funzione in cui si trova.

## Cosa estrae Maguyva in PowerShell

Maguyva copre i file `.ps1`, `.psm1` e `.psd1`. Funzioni e metodi di classe vengono estratti come callable, e classi ed enum come tipi. I parametri di script e di metodo vengono tracciati, e letture e scritture dentro una funzione vengono attribuite a quella funzione invece che al modulo.

Le chiamate ai cmdlet restano nel grafo. PowerShell non applica il filtro della libreria standard usato dalla maggior parte dei linguaggi, quindi `Write-Host`, `Get-ChildItem` e `Restart-Service` compaiono come archi di chiamata accanto alle tue funzioni `Get-*` e `Set-*`. Un agente può chiedere quali script riavviano un servizio, o quali funzioni scrivono sulla console, e ottenere una risposta strutturale.

Per PowerShell nessun tipo di relazione è marcato come non applicabile, quindi il grafo registra anche ereditarietà tra classi e implementazione di interfacce, istanziazione, flusso di controllo e letture e scritture.

## Esempi di prompt per agenti

- "Chi chiama `Invoke-Backup`, e da quali script pianificati?" (`find_symbol`, poi `dependency_search` incoming)
- "Quali funzioni chiamano `Restart-Service`?" (`dependency_search`)
- "Traccia cosa fa `Deploy-Site` dall'inizio alla fine." (`get_task_context`)

## Limiti noti

- Poiché le chiamate ai cmdlet vengono mantenute, quelle molto comuni come `Write-Host` e `Select-Object` hanno moltissimi archi in entrata. Parti dalla tua funzione quando vuoi un grafo delle chiamate mirato.
- `Import-Module` e il dot-sourcing sono comandi normali, quindi il preset `imports` di `structural_search` non seleziona nulla. Usa `text_pattern_search` per elencarli.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto nella [pagina di compatibilità](/it/docs/compatibility). Per il codice .NET chiamato dai tuoi script, leggi la [guida a C#](/it/languages/csharp).

## Dettagli del motore

- Il supporto a PowerShell copre `.ps1`, `.psm1` e `.psd1`. Funzioni e metodi di classe sono callable, classi ed enum sono tipi.
- Per PowerShell il filtro della libreria standard è disattivato, quindi le chiamate a cmdlet come `Get-ChildItem` restano nel grafo accanto alle tue funzioni.
- Letture e scritture dentro una funzione vengono attribuite a quella funzione invece che al modulo.

## Punti di ingresso MCP utili

- `find_symbol`: Usalo per una funzione avanzata o una classe quando ti servono definizione e chiamanti.
- `dependency_search`: Usa l'attraversamento incoming su un cmdlet come `Restart-Service` per vedere quali script lo chiamano.
- `get_task_context`: Usalo per prompt come "traccia cosa fa `Deploy-Site` dall'inizio alla fine".
