# PowerShell no Maguyva: grafos de código para scripts e módulos

Canonical source: https://maguyva.ai/pt-br/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).

O Maguyva oferece suporte a PowerShell com AST, símbolos e grafo, para que agentes de IA sigam funções, classes e chamadas de cmdlets em scripts e módulos.

## Panorama de suporte

- Nível: Suporte a AST e símbolos
- Shell
- Extensões: .ps1, .psd1, .psm1
- Parsing real de AST para busca com consciência de sintaxe e contexto estrutural.
- Símbolos nomeados alimentam a busca semântica e as referências cruzadas. A navegação por grafo fica disponível quando a extração de relações está habilitada.
- Esta linguagem fornece símbolos e relações para a busca orientada por grafo; os tipos de aresta compatíveis variam de acordo com seus construtos nativos.
- A análise de AST e a extração de símbolos estão disponíveis.

## Uso ideal

- Times de infraestrutura e operações com grandes acervos de `.ps1` e `.psm1` cujos scripts chamam funções uns dos outros.
- Módulos PowerShell construídos com funções avançadas, classes e enums.
- Runbooks de automação em que os agentes precisam ver quais scripts tocam um serviço, um compartilhamento de arquivos ou uma chave de registro antes de uma mudança.

## Fluxos de trabalho de agente

- Encontrar todos os chamadores de uma função avançada antes de mudar seus parâmetros.
- Listar quais scripts chamam um cmdlet como `Restart-Service` antes de mudar um runbook.
- Mapear quais funções escrevem em uma variável compartilhada antes de refatorar um módulo.

## Onde PowerShell derruba ferramentas de IA superficiais

Suas funções e os cmdlets embutidos seguem o mesmo estilo de nomes. `Get-Invoice` e `Get-ChildItem` parecem iguais, então uma ferramenta que descarta comandos "embutidos" pelo verbo joga fora as suas funções também. Os scripts ainda misturam código no nível do módulo, funções, classes e blocos de script em um só arquivo, o que dificulta saber a qual função uma linha pertence.

O Maguyva mantém os dois tipos de chamada e atribui cada uma à função em que ela está.

## O que o Maguyva extrai em PowerShell

O Maguyva cobre arquivos `.ps1`, `.psm1` e `.psd1`. Funções e métodos de classe são extraídos como invocáveis, e classes e enums como tipos. Parâmetros de script e de método são rastreados, e leituras e escritas dentro de uma função são atribuídas a essa função, não ao módulo.

As chamadas de cmdlets ficam no grafo. O PowerShell não aplica o filtro de biblioteca padrão que a maioria das linguagens usa, então `Write-Host`, `Get-ChildItem` e `Restart-Service` aparecem como arestas de chamada ao lado das suas funções `Get-*` e `Set-*`. Um agente pode perguntar quais scripts reiniciam um serviço, ou quais funções escrevem no console, e receber uma resposta estrutural.

Nenhum tipo de relação está marcado como não aplicável para PowerShell, então o grafo também registra herança de classes e implementação de interfaces, instanciação, fluxo de controle e leituras e escritas.

## Exemplos de prompts para agentes

- "Quem chama `Invoke-Backup`, e de quais scripts agendados?" (`find_symbol`, depois `dependency_search` incoming)
- "Quais funções chamam `Restart-Service`?" (`dependency_search`)
- "Rastreie o que `Deploy-Site` faz do começo ao fim." (`get_task_context`)

## Limitações conhecidas

- Como as chamadas de cmdlets são mantidas, as muito comuns, como `Write-Host` e `Select-Object`, têm um número enorme de arestas de entrada. Comece pela sua própria função quando quiser um grafo de chamadas focado.
- `Import-Module` e o dot-sourcing são comandos comuns, então o preset `imports` do `structural_search` não seleciona nada. Use `text_pattern_search` para listá-los.

## Próximos passos

Conecte um repositório pelo [início rápido](/pt-br/docs/quickstart) e depois confira a matriz de suporte na [página de compatibilidade](/pt-br/docs/compatibility). Para o código .NET que seus scripts chamam, leia o [guia de C#](/pt-br/languages/csharp).

## Detalhes do motor

- O suporte a PowerShell cobre `.ps1`, `.psm1` e `.psd1`. Funções e métodos de classe são invocáveis, e classes e enums são tipos.
- O filtro de biblioteca padrão está desligado para PowerShell, então chamadas de cmdlets como `Get-ChildItem` ficam no grafo ao lado das suas funções.
- Leituras e escritas dentro de uma função são atribuídas a essa função, não ao módulo.

## Pontos de entrada MCP úteis

- `find_symbol`: Use para uma função avançada ou classe quando precisar da definição e dos chamadores.
- `dependency_search`: Use a travessia incoming em um cmdlet como `Restart-Service` para ver quais scripts o chamam.
- `get_task_context`: Use para prompts como "rastreie o que `Deploy-Site` faz do começo ao fim".
