# PowerShell en Maguyva: grafos de código para scripts y módulos

Canonical source: https://maguyva.ai/es/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 admite PowerShell con AST, símbolos y grafo, para que los agentes de IA sigan funciones, clases y llamadas a cmdlets en scripts y módulos.

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Shell
- Extensiones: .ps1, .psd1, .psm1
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

## Mejor uso

- Equipos de infraestructura y operaciones con grandes conjuntos de `.ps1` y `.psm1` cuyos scripts se llaman funciones entre sí.
- Módulos de PowerShell construidos con funciones avanzadas, clases y enums.
- Runbooks de automatización donde los agentes necesitan ver qué scripts tocan un servicio, un recurso compartido o una clave del registro antes de un cambio.

## Flujos de trabajo del agente

- Encontrar todos los llamadores de una función avanzada antes de cambiar sus parámetros.
- Listar qué scripts llaman a un cmdlet como `Restart-Service` antes de cambiar un runbook.
- Mapear qué funciones escriben en una variable compartida antes de refactorizar un módulo.

## Dónde PowerShell hace tropezar a las herramientas de IA superficiales

Tus funciones y los cmdlets integrados comparten el mismo estilo de nombres. `Get-Invoice` y `Get-ChildItem` se ven iguales, así que una herramienta que descarta los comandos "integrados" por su verbo tira también tus propias funciones. Además, los scripts mezclan código a nivel de módulo, funciones, clases y bloques de script en un mismo archivo, lo que dificulta saber a qué función pertenece una línea.

Maguyva conserva ambos tipos de llamada y atribuye cada una a la función en la que está.

## Qué extrae Maguyva en PowerShell

Maguyva cubre archivos `.ps1`, `.psm1` y `.psd1`. Las funciones y los métodos de clase se extraen como invocables, y las clases y los enums como tipos. Se siguen los parámetros de scripts y métodos, y las lecturas y escrituras dentro de una función se atribuyen a esa función y no al módulo.

Las llamadas a cmdlets se quedan en el grafo. PowerShell no aplica el filtro de biblioteca estándar que usan la mayoría de lenguajes, así que `Write-Host`, `Get-ChildItem` y `Restart-Service` aparecen como aristas de llamada junto a tus propias funciones `Get-*` y `Set-*`. Un agente puede preguntar qué scripts reinician un servicio, o qué funciones escriben en la consola, y obtener una respuesta estructural.

Ningún tipo de relación está marcado como no aplicable para PowerShell, así que el grafo también registra herencia de clases e implementación de interfaces, instanciación, flujo de control y lecturas y escrituras.

## Ejemplos de prompts para agentes

- "¿Quién llama a `Invoke-Backup` y desde qué scripts programados?" (`find_symbol`, luego `dependency_search` incoming)
- "¿Qué funciones llaman a `Restart-Service`?" (`dependency_search`)
- "Rastrea lo que hace `Deploy-Site` de principio a fin." (`get_task_context`)

## Limitaciones conocidas

- Como se conservan las llamadas a cmdlets, los muy comunes como `Write-Host` y `Select-Object` tienen una enorme cantidad de aristas entrantes. Empieza por tu propia función cuando quieras un grafo de llamadas enfocado.
- `Import-Module` y el dot-sourcing son comandos normales, así que el preset `imports` de `structural_search` no selecciona nada. Usa `text_pattern_search` para listarlos.

## Próximos pasos

Conecta un repositorio con el [inicio rápido](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Para el código .NET que llaman tus scripts, lee la [guía de C#](/es/languages/csharp).

## Detalles del motor

- El soporte de PowerShell cubre `.ps1`, `.psm1` y `.psd1`. Las funciones y los métodos de clase son invocables, y las clases y los enums son tipos.
- El filtro de biblioteca estándar está desactivado para PowerShell, así que las llamadas a cmdlets como `Get-ChildItem` se quedan en el grafo junto a tus propias funciones.
- Las lecturas y escrituras dentro de una función se atribuyen a esa función y no al módulo.

## Puntos de entrada MCP útiles

- `find_symbol`: Úsalo para una función avanzada o una clase cuando necesites la definición y los llamadores.
- `dependency_search`: Usa el recorrido incoming sobre un cmdlet como `Restart-Service` para ver qué scripts lo llaman.
- `get_task_context`: Úsalo para prompts como "rastrea lo que hace `Deploy-Site` de principio a fin".
