# PowerShell у Maguyva: графи коду для скриптів і модулів

Canonical source: https://maguyva.ai/uk/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 підтримує PowerShell з AST, символами та графом, щоб ШІ-агенти могли простежувати функції, класи та виклики командлетів у скриптах і модулях.

## Знімок підтримки

- Рівень: Підтримка AST і символів
- Оболонка
- Розширення: .ps1, .psd1, .psm1
- Справжній розбір AST для пошуку з урахуванням синтаксису та структурного контексту.
- Іменовані символи забезпечують семантичний пошук і перехресні посилання. Навігація графом доступна, коли ввімкнено видобування зв’язків.
- Ця мова додає символи та зв’язки до пошуку з урахуванням графа; підтримувані типи ребер залежать від притаманних їй конструкцій.
- Доступні як розбір AST, так і видобування символів.

## Найкраще підходить

- Команди інфраструктури та експлуатації з великими наборами `.ps1` і `.psm1`, де скрипти викликають функції одне одного.
- Модулі PowerShell, побудовані з розширених функцій, класів і переліків.
- Ранбуки автоматизації, де агентові треба побачити, які скрипти зачіпають службу, спільну папку чи розділ реєстру, перш ніж щось змінювати.

## Робочі процеси агента

- Знайти всі виклики розширеної функції, перш ніж змінювати її параметри.
- Перелічити скрипти, що викликають командлет на кшталт `Restart-Service`, перш ніж змінювати ранбук.
- Скласти карту функцій, які записують у спільну змінну, перед рефакторингом модуля.

## Де PowerShell збиває з пантелику поверхові ШІ-інструменти

Ваші функції та вбудовані командлети мають однаковий стиль іменування. `Get-Invoice` і `Get-ChildItem` виглядають однаково, тому інструмент, що відкидає «вбудовані» команди за дієсловом, відкидає й ваші функції. Крім того, скрипти змішують код рівня модуля, функції, класи та блоки скриптів в одному файлі, і важко зрозуміти, якій функції належить рядок.

Maguyva зберігає обидва види викликів і приписує кожен виклик функції, всередині якої він розташований.

## Що Maguyva витягує з коду PowerShell

Maguyva охоплює файли `.ps1`, `.psm1` і `.psd1`. Функції та методи класів витягуються як об'єкти виклику, а класи й переліки як типи. Параметри скриптів і методів відстежуються, а читання й запис усередині функції приписуються цій функції, а не модулю.

Виклики командлетів лишаються в графі. PowerShell не застосовує фільтр стандартної бібліотеки, який використовується для більшості мов, тож `Write-Host`, `Get-ChildItem` і `Restart-Service` показуються як ребра викликів поруч із вашими функціями `Get-*` і `Set-*`. Агент може запитати, які скрипти перезапускають службу або які функції пишуть у консоль, і отримати структурну відповідь.

Жоден тип зв'язків не позначено як незастосовний для PowerShell, тому граф також фіксує успадкування класів і реалізацію інтерфейсів, створення екземплярів, потік керування, читання й запис.

## Приклади промптів для агентів

- «Хто викликає `Invoke-Backup` і з яких запланованих скриптів?» (`find_symbol`, потім `dependency_search` за вхідними зв'язками)
- «Які функції викликають `Restart-Service`?» (`dependency_search`)
- «Простеж, що робить `Deploy-Site` від початку до кінця.» (`get_task_context`)

## Відомі обмеження

- Оскільки виклики командлетів зберігаються, дуже поширені командлети на кшталт `Write-Host` і `Select-Object` мають багато вхідних ребер. Коли потрібен сфокусований граф викликів, починайте з власної функції.
- `Import-Module` і підключення скриптів через крапку є звичайними командами, тому пресет `imports` у `structural_search` нічого не вибирає. Щоб перелічити їх, використовуйте `text_pattern_search`.

## Наступні кроки

Під'єднайте репозиторій за [швидким стартом](/uk/docs/quickstart), потім перегляньте матрицю підтримки на [сторінці сумісності](/uk/docs/compatibility). Для коду .NET, який викликають ваші скрипти, прочитайте [посібник із C#](/uk/languages/csharp).

## Деталі рушія

- Підтримка PowerShell охоплює файли `.ps1`, `.psm1` і `.psd1`. Функції та методи класів є об'єктами виклику; класи й переліки є типами.
- Фільтр стандартної бібліотеки для PowerShell вимкнено, тому виклики командлетів на кшталт `Get-ChildItem` лишаються в графі поруч із вашими функціями.
- Читання й запис усередині функції приписуються цій функції, а не модулю.

## Корисні точки входу MCP

- `find_symbol`: Використовуйте для розширеної функції чи класу, коли потрібні визначення й виклики.
- `dependency_search`: Використовуйте обхід вхідних зв'язків, щоб побачити, які скрипти викликають командлет на кшталт `Restart-Service`.
- `get_task_context`: Використовуйте для промптів на кшталт «простеж, що робить `Deploy-Site` від початку до кінця».
