# PowerShell dans Maguyva : des graphes de code pour scripts et modules

Canonical source: https://maguyva.ai/fr/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 prend en charge PowerShell avec AST, symboles et graphe, pour que les agents IA suivent fonctions, classes et appels de cmdlets dans les scripts et modules.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Shell
- Extensions: .ps1, .psd1, .psm1
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les équipes infrastructure et exploitation qui gèrent de grands parcs de fichiers `.ps1` et `.psm1` dont les scripts s'appellent les uns les autres.
- Les modules PowerShell construits avec des fonctions avancées, des classes et des enums.
- Les runbooks d'automatisation où les agents doivent voir quels scripts touchent un service, un partage de fichiers ou une clé de registre avant un changement.

## Workflows d'agent

- Trouver tous les appelants d'une fonction avancée avant de modifier ses paramètres.
- Lister les scripts qui appellent une cmdlet comme `Restart-Service` avant de modifier un runbook.
- Cartographier les fonctions qui écrivent dans une variable partagée avant de refactoriser un module.

## Là où PowerShell fait trébucher les outils d'IA superficiels

Vos fonctions et les cmdlets intégrées suivent le même style de nommage. `Get-Invoice` et `Get-ChildItem` se ressemblent : un outil qui écarte les commandes « intégrées » d'après leur verbe jette aussi vos propres fonctions. Les scripts mélangent en outre du code de niveau module, des fonctions, des classes et des blocs de script dans un même fichier, ce qui rend difficile de savoir à quelle fonction appartient une ligne.

Maguyva conserve les deux types d'appels et rattache chacun à la fonction qui le contient.

## Ce que Maguyva extrait en PowerShell

Maguyva couvre les fichiers `.ps1`, `.psm1` et `.psd1`. Les fonctions et les méthodes de classe sont extraites comme appelables, les classes et les enums comme types. Les paramètres de script et de méthode sont suivis, et les lectures et écritures dans une fonction sont rattachées à cette fonction plutôt qu'au module.

Les appels de cmdlets restent dans le graphe. PowerShell n'applique pas le filtre de bibliothèque standard utilisé par la plupart des langages : `Write-Host`, `Get-ChildItem` et `Restart-Service` apparaissent donc comme des arêtes d'appel à côté de vos propres fonctions `Get-*` et `Set-*`. Un agent peut demander quels scripts redémarrent un service, ou quelles fonctions écrivent dans la console, et obtenir une réponse structurelle.

Aucun type de relation n'est marqué comme non applicable pour PowerShell : le graphe enregistre donc aussi l'héritage de classes et l'implémentation d'interfaces, l'instanciation, le flux de contrôle et les lectures et écritures.

## Exemples de prompts pour agents

- « Qui appelle `Invoke-Backup`, et depuis quels scripts planifiés ? » (`find_symbol`, puis `dependency_search` en incoming)
- « Quelles fonctions appellent `Restart-Service` ? » (`dependency_search`)
- « Retrace ce que fait `Deploy-Site` du début à la fin. » (`get_task_context`)

## Limites connues

- Comme les appels de cmdlets sont conservés, les plus courants comme `Write-Host` et `Select-Object` ont un très grand nombre d'arêtes entrantes. Partez de votre propre fonction si vous voulez un graphe d'appels ciblé.
- `Import-Module` et le dot-sourcing sont des commandes ordinaires : le preset `imports` de `structural_search` ne sélectionne donc rien. Utilisez `text_pattern_search` pour les lister.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Pour le code .NET appelé par vos scripts, lisez le [guide C#](/fr/languages/csharp).

## Détails du moteur

- La prise en charge de PowerShell couvre `.ps1`, `.psm1` et `.psd1`. Les fonctions et méthodes de classe sont des appelables, les classes et enums des types.
- Le filtre de bibliothèque standard est désactivé pour PowerShell : les appels de cmdlets comme `Get-ChildItem` restent dans le graphe à côté de vos propres fonctions.
- Les lectures et écritures dans une fonction sont rattachées à cette fonction plutôt qu'au module.

## Points d'entrée MCP utiles

- `find_symbol`: Utilisez-le pour une fonction avancée ou une classe quand vous avez besoin de la définition et des appelants.
- `dependency_search`: Utilisez la traversée incoming sur une cmdlet comme `Restart-Service` pour voir quels scripts l'appellent.
- `get_task_context`: Utilisez-le pour des prompts comme « retrace ce que fait `Deploy-Site` du début à la fin ».
