# PowerShell v Maguyva: grafy kódu pro skripty a moduly

Canonical source: https://maguyva.ai/cs/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 podporuje PowerShell s AST, symboly a grafem, takže AI agenti sledují funkce, třídy a volání cmdletů napříč skripty a moduly.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Shell
- Přípony: .ps1, .psd1, .psm1
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

## Nejlépe se hodí pro

- Infrastrukturní a provozní týmy s velkými sbírkami souborů `.ps1` a `.psm1`, jejichž skripty si navzájem volají funkce.
- Moduly pro PowerShell postavené z pokročilých funkcí, tříd a výčtů.
- Automatizační runbooky, u kterých agenti musí před změnou vidět, které skripty sahají na službu, sdílenou složku nebo klíč registru.

## Workflow agentů

- Najít všechna volání pokročilé funkce před změnou jejích parametrů.
- Vypsat skripty, které volají cmdlet jako `Restart-Service`, před změnou runbooku.
- Před refaktoringem modulu zmapovat funkce, které zapisují do sdílené proměnné.

## Kde PowerShell podráží povrchní AI nástroje

Vaše funkce i vestavěné cmdlety používají stejný styl pojmenování. `Get-Invoice` a `Get-ChildItem` vypadají stejně, takže nástroj, který podle slovesa vyřadí „vestavěné“ příkazy, zahodí i vaše vlastní funkce. Skripty navíc v jednom souboru míchají kód na úrovni modulu, funkce, třídy a bloky skriptu, takže je těžké poznat, ke které funkci řádek patří.

Maguyva ponechává oba druhy volání a každé přiřadí funkci, ve které se nachází.

## Co Maguyva v PowerShell extrahuje

Maguyva pokrývá soubory `.ps1`, `.psm1` a `.psd1`. Funkce a metody tříd se extrahují jako volatelné prvky, třídy a výčty jako typy. Sledují se parametry skriptů i metod a čtení a zápisy uvnitř funkce se přiřazují této funkci, nikoli modulu.

Volání cmdletů v grafu zůstávají. PowerShell nepoužívá filtr standardní knihovny, který má většina jazyků, takže `Write-Host`, `Get-ChildItem` a `Restart-Service` se zobrazují jako hrany volání vedle vašich vlastních funkcí `Get-*` a `Set-*`. Agent se může zeptat, které skripty restartují službu nebo které funkce zapisují do konzole, a dostane strukturní odpověď.

Pro PowerShell není žádný typ relace označen jako nepoužitelný, takže graf zaznamenává také dědičnost tříd a implementaci rozhraní, vytváření instancí, tok řízení a čtení a zápisy.

## Ukázkové prompty pro agenty

- „Kdo volá `Invoke-Backup` a ze kterých plánovaných skriptů?“ (`find_symbol`, pak `dependency_search` incoming)
- „Které funkce volají `Restart-Service`?“ (`dependency_search`)
- „Vysleduj, co `Deploy-Site` dělá od začátku do konce.“ (`get_task_context`)

## Známá omezení

- Protože se volání cmdletů zachovávají, velmi běžné cmdlety jako `Write-Host` a `Select-Object` mají obrovské množství příchozích hran. Když chcete zaměřený graf volání, začněte od vlastní funkce.
- `Import-Module` a dot-sourcing jsou běžné příkazy, takže preset `imports` v `structural_search` nic nevybere. K jejich výpisu použijte `text_pattern_search`.

## Další kroky

Připojte repozitář podle [rychlého startu](/cs/docs/quickstart) a pak si prohlédněte matici podpory na [stránce kompatibility](/cs/docs/compatibility). Pro kód .NET, který vaše skripty volají, si přečtěte [průvodce jazykem C#](/cs/languages/csharp).

## Podrobnosti enginu

- Podpora PowerShell pokrývá `.ps1`, `.psm1` a `.psd1`. Funkce a metody tříd jsou volatelné prvky, třídy a výčty jsou typy.
- Pro PowerShell je filtr standardní knihovny vypnutý, takže volání cmdletů jako `Get-ChildItem` zůstávají v grafu vedle vašich vlastních funkcí.
- Čtení a zápisy uvnitř funkce se přiřazují této funkci, nikoli modulu.

## Užitečné vstupní body MCP

- `find_symbol`: Použijte ho pro pokročilou funkci nebo třídu, když potřebujete definici a volající.
- `dependency_search`: Použijte incoming procházení na cmdletu jako `Restart-Service`, abyste viděli, které skripty ho volají.
- `get_task_context`: Použijte ho pro prompty jako „vysleduj, co `Deploy-Site` dělá od začátku do konce“.
