# PowerShell dalam Maguyva: graf kod untuk skrip dan modul

Canonical source: https://maguyva.ai/ms/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 menyokong PowerShell dengan AST, simbol dan graf, supaya ejen AI boleh menjejak fungsi, kelas dan panggilan cmdlet merentas skrip dan modul.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Shell
- Sambungan fail: .ps1, .psd1, .psm1
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Pasukan infrastruktur dan operasi dengan koleksi besar `.ps1` dan `.psm1` yang skripnya saling memanggil fungsi.
- Modul PowerShell yang dibina daripada fungsi lanjutan, kelas dan enum.
- Runbook automasi di mana ejen perlu melihat skrip mana yang menyentuh perkhidmatan, perkongsian fail atau kunci registri sebelum sesuatu perubahan.

## Aliran kerja ejen

- Mencari semua pemanggil fungsi lanjutan sebelum mengubah parameternya.
- Menyenaraikan skrip yang memanggil cmdlet seperti `Restart-Service` sebelum mengubah runbook.
- Memetakan fungsi mana yang menulis kepada pemboleh ubah dikongsi sebelum memfaktorkan semula modul.

## Di mana PowerShell memerangkap alat AI yang cetek

Fungsi anda dan cmdlet terbina dalam menggunakan gaya penamaan yang sama. `Get-Invoice` dan `Get-ChildItem` kelihatan serupa, jadi alat yang membuang arahan "terbina dalam" berdasarkan kata kerja turut membuang fungsi anda. Skrip juga mencampurkan kod peringkat modul, fungsi, kelas dan blok skrip dalam satu fail, jadi sukar untuk mengetahui fungsi mana yang memiliki sesuatu baris.

Maguyva mengekalkan kedua-dua jenis panggilan dan mengaitkan setiap panggilan dengan fungsi tempat ia berada.

## Apa yang diekstrak oleh Maguyva daripada kod PowerShell

Maguyva merangkumi fail `.ps1`, `.psm1` dan `.psd1`. Fungsi dan kaedah kelas diekstrak sebagai callable, manakala kelas dan enum sebagai jenis. Parameter skrip dan kaedah dijejak, dan bacaan serta tulisan di dalam fungsi dikaitkan dengan fungsi itu, bukan dengan modul.

Panggilan cmdlet kekal dalam graf. PowerShell tidak menggunakan penapis pustaka standard yang digunakan oleh kebanyakan bahasa, jadi `Write-Host`, `Get-ChildItem` dan `Restart-Service` muncul sebagai tepi panggilan bersebelahan fungsi `Get-*` dan `Set-*` anda sendiri. Ejen boleh bertanya skrip mana yang memulakan semula sesuatu perkhidmatan atau fungsi mana yang menulis ke konsol dan mendapat jawapan berstruktur.

Tiada jenis hubungan yang ditanda sebagai tidak berkenaan untuk PowerShell, jadi graf juga merekodkan pewarisan kelas dan pelaksanaan antara muka, instansiasi, aliran kawalan, serta bacaan dan tulisan.

## Contoh gesaan ejen

- "Siapa yang memanggil `Invoke-Backup`, dan daripada skrip berjadual mana?" (`find_symbol`, kemudian `dependency_search` arah masuk)
- "Fungsi mana yang memanggil `Restart-Service`?" (`dependency_search`)
- "Jejaki apa yang dilakukan oleh `Deploy-Site` dari mula hingga akhir." (`get_task_context`)

## Had yang diketahui

- Oleh sebab panggilan cmdlet dikekalkan, cmdlet yang sangat biasa seperti `Write-Host` dan `Select-Object` mempunyai banyak tepi masuk. Mulakan daripada fungsi anda sendiri apabila anda mahukan graf panggilan yang terfokus.
- `Import-Module` dan dot-sourcing ialah arahan biasa, jadi pratetap `imports` dalam `structural_search` tidak memilih apa-apa. Gunakan `text_pattern_search` untuk menyenaraikannya.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Untuk kod .NET yang dipanggil oleh skrip anda, baca [panduan C#](/ms/languages/csharp).

## Butiran enjin

- Sokongan PowerShell merangkumi fail `.ps1`, `.psm1` dan `.psd1`. Fungsi dan kaedah kelas ialah callable; kelas dan enum ialah jenis.
- Penapis pustaka standard dimatikan untuk PowerShell, jadi panggilan cmdlet seperti `Get-ChildItem` kekal dalam graf bersebelahan fungsi anda sendiri.
- Bacaan dan tulisan di dalam fungsi dikaitkan dengan fungsi itu, bukan dengan modul.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan untuk fungsi lanjutan atau kelas apabila anda memerlukan takrifan dan pemanggilnya.
- `dependency_search`: Gunakan penelusuran arah masuk untuk melihat skrip mana yang memanggil cmdlet seperti `Restart-Service`.
- `get_task_context`: Gunakan untuk gesaan seperti "jejaki apa yang dilakukan oleh `Deploy-Site` dari mula hingga akhir".
