# PowerShell w Maguyva: grafy kodu dla skryptów i modułów

Canonical source: https://maguyva.ai/pl/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 obsługuje PowerShell przez AST, symbole i graf, dzięki czemu agenci AI śledzą funkcje, klasy i wywołania cmdletów w skryptach i modułach.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Shell
- Rozszerzenia: .ps1, .psd1, .psm1
- Prawdziwe parsowanie AST dla wyszukiwania świadomego składni i kontekstu strukturalnego.
- Nazwane symbole zasilają wyszukiwanie semantyczne i wzajemne odwołania. Nawigacja po grafie jest dostępna po włączeniu ekstrakcji relacji.
- Ten język dostarcza symbole i relacje do wyszukiwania uwzględniającego graf; obsługiwane typy krawędzi zależą od jego rodzimych konstrukcji.
- Dostępne są zarówno parsowanie AST, jak i ekstrakcja symboli.

## Najlepsze dopasowanie

- Zespoły infrastruktury i operacji z dużymi zbiorami plików `.ps1` i `.psm1`, których skrypty wywołują nawzajem swoje funkcje.
- Moduły PowerShell zbudowane z funkcji zaawansowanych, klas i typów wyliczeniowych.
- Runbooki automatyzacji, w których agenci muszą przed zmianą zobaczyć, które skrypty dotykają usługi, udziału plików lub klucza rejestru.

## Workflow agentów

- Znaleźć wszystkie miejsca wywołujące funkcję zaawansowaną przed zmianą jej parametrów.
- Wypisać skrypty wywołujące cmdlet, taki jak `Restart-Service`, przed zmianą runbooka.
- Zmapować funkcje zapisujące do współdzielonej zmiennej przed refaktoryzacją modułu.

## Gdzie PowerShell sprawia kłopot powierzchownym narzędziom AI

Twoje funkcje i wbudowane cmdlety mają ten sam styl nazewnictwa. `Get-Invoice` i `Get-ChildItem` wyglądają tak samo, więc narzędzie, które odrzuca „wbudowane” polecenia według czasownika, wyrzuca też twoje funkcje. Skrypty mieszają ponadto w jednym pliku kod na poziomie modułu, funkcje, klasy i bloki skryptu, przez co trudno stwierdzić, do której funkcji należy dana linia.

Maguyva zachowuje oba rodzaje wywołań i przypisuje każde z nich do funkcji, w której się znajduje.

## Co Maguyva wyodrębnia w PowerShell

Maguyva obejmuje pliki `.ps1`, `.psm1` i `.psd1`. Funkcje i metody klas są wyodrębniane jako elementy wywoływalne, a klasy i typy wyliczeniowe jako typy. Śledzone są parametry skryptów i metod, a odczyty i zapisy wewnątrz funkcji są przypisywane do tej funkcji, a nie do modułu.

Wywołania cmdletów zostają w grafie. PowerShell nie stosuje filtra biblioteki standardowej, którego używa większość języków, więc `Write-Host`, `Get-ChildItem` i `Restart-Service` pojawiają się jako krawędzie wywołań obok twoich własnych funkcji `Get-*` i `Set-*`. Agent może zapytać, które skrypty restartują usługę albo które funkcje piszą do konsoli, i dostać odpowiedź opartą na strukturze.

Dla PowerShell żaden typ relacji nie jest oznaczony jako nie mający zastosowania, więc graf zapisuje też dziedziczenie klas i implementację interfejsów, tworzenie instancji, przepływ sterowania oraz odczyty i zapisy.

## Przykładowe prompty dla agentów

- „Kto wywołuje `Invoke-Backup` i z których zaplanowanych skryptów?” (`find_symbol`, potem `dependency_search` incoming)
- „Które funkcje wywołują `Restart-Service`?” (`dependency_search`)
- „Prześledź, co robi `Deploy-Site` od początku do końca.” (`get_task_context`)

## Znane ograniczenia

- Ponieważ wywołania cmdletów są zachowywane, bardzo popularne, takie jak `Write-Host` i `Select-Object`, mają ogromną liczbę krawędzi przychodzących. Gdy chcesz skupionego grafu wywołań, zacznij od własnej funkcji.
- `Import-Module` i dot-sourcing to zwykłe polecenia, więc preset `imports` w `structural_search` niczego nie wybiera. Do ich wypisania użyj `text_pattern_search`.

## Kolejne kroki

Podłącz repozytorium za pomocą [szybkiego startu](/pl/docs/quickstart), a potem sprawdź macierz obsługi na [stronie zgodności](/pl/docs/compatibility). W przypadku kodu .NET wywoływanego przez twoje skrypty przeczytaj [przewodnik po C#](/pl/languages/csharp).

## Szczegóły silnika

- Obsługa PowerShell obejmuje `.ps1`, `.psm1` i `.psd1`. Funkcje i metody klas są elementami wywoływalnymi, a klasy i typy wyliczeniowe typami.
- Dla PowerShell filtr biblioteki standardowej jest wyłączony, więc wywołania cmdletów, takich jak `Get-ChildItem`, zostają w grafie obok twoich własnych funkcji.
- Odczyty i zapisy wewnątrz funkcji są przypisywane do tej funkcji, a nie do modułu.

## Przydatne punkty wejścia MCP

- `find_symbol`: Użyj go dla funkcji zaawansowanej lub klasy, gdy potrzebujesz definicji i wywołujących.
- `dependency_search`: Użyj przejścia incoming na cmdlecie, takim jak `Restart-Service`, aby zobaczyć, które skrypty go wywołują.
- `get_task_context`: Użyj go do promptów takich jak „Prześledź, co robi `Deploy-Site` od początku do końca”.
