# PowerShell-tuki Maguyva-palvelussa: koodigraafit skripteille ja moduuleille

Canonical source: https://maguyva.ai/fi/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 tukee PowerShell-kieltä AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata funktioita, luokkia ja cmdlet-kutsuja skripteissä ja moduuleissa.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Shell
- Päätteet: .ps1, .psd1, .psm1
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- Infrastruktuuri- ja ylläpitotiimit, joilla on suuria `.ps1`- ja `.psm1`-kokoelmia, joiden skriptit kutsuvat toistensa funktioita.
- Edistyneistä funktioista, luokista ja luettelotyypeistä rakennetut PowerShell-moduulit.
- Automaation ajokirjat, joissa agenttien on ennen muutosta nähtävä, mitkä skriptit koskevat palvelua, tiedostojakoa tai rekisteriavainta.

## Agenttien työnkulut

- Löytää edistyneen funktion kaikki kutsujat ennen sen parametrien muuttamista.
- Listata skriptit, jotka kutsuvat cmdletiä kuten `Restart-Service`, ennen ajokirjan muuttamista.
- Kartoittaa ennen moduulin refaktorointia, mitkä funktiot kirjoittavat jaettuun muuttujaan.

## Missä PowerShell kampittaa pinnallisia tekoälytyökaluja

Omat funktiosi ja sisäänrakennetut cmdletit noudattavat samaa nimeämistyyliä. `Get-Invoice` ja `Get-ChildItem` näyttävät samalta, joten työkalu, joka karsii ”sisäänrakennetut” komennot verbin perusteella, heittää pois myös omat funktiosi. Skriptit sekoittavat lisäksi moduulitason koodia, funktioita, luokkia ja skriptilohkoja samaan tiedostoon, joten on vaikea nähdä, mihin funktioon jokin rivi kuuluu.

Maguyva säilyttää molemmat kutsutyypit ja liittää jokaisen kutsun funktioon, jossa se on.

## Mitä Maguyva poimii PowerShell-koodista

Maguyva kattaa `.ps1`-, `.psm1`- ja `.psd1`-tiedostot. Funktiot ja luokkien metodit poimitaan kutsuttavina, ja luokat ja luettelotyypit tyyppeinä. Skriptien ja metodien parametreja seurataan, ja funktion sisäiset luvut ja kirjoitukset liitetään kyseiseen funktioon eikä moduuliin.

Cmdlet-kutsut jäävät graafiin. PowerShell ei käytä useimpien kielten standardikirjastosuodatinta, joten `Write-Host`, `Get-ChildItem` ja `Restart-Service` näkyvät kutsukaarina omien `Get-*`- ja `Set-*`-funktioidesi rinnalla. Agentti voi kysyä, mitkä skriptit käynnistävät palvelun uudelleen tai mitkä funktiot kirjoittavat konsoliin, ja saada rakenteeseen perustuvan vastauksen.

PowerShell-koodille yhtään suhdetyyppiä ei ole merkitty soveltumattomaksi, joten graafi tallentaa myös luokkaperinnän ja rajapintojen toteutukset, instanssien luonnit, ohjausvuon sekä luvut ja kirjoitukset.

## Esimerkkikehotteita agenteille

- ”Kuka kutsuu funktiota `Invoke-Backup` ja mistä ajastetuista skripteistä?” (`find_symbol`, sitten `dependency_search` incoming)
- ”Mitkä funktiot kutsuvat cmdletiä `Restart-Service`?” (`dependency_search`)
- ”Jäljitä, mitä `Deploy-Site` tekee alusta loppuun.” (`get_task_context`)

## Tunnetut rajoitukset

- Koska cmdlet-kutsut säilytetään, hyvin yleisillä cmdleteillä kuten `Write-Host` ja `Select-Object` on valtava määrä saapuvia kaaria. Aloita omasta funktiostasi, kun haluat rajatun kutsugraafin.
- `Import-Module` ja dot-sourcing ovat tavallisia komentoja, joten `structural_search`-työkalun esiasetus `imports` ei valitse mitään. Käytä niiden listaamiseen `text_pattern_search`-työkalua.

## Seuraavat vaiheet

Yhdistä repositorio [pikaoppaan](/fi/docs/quickstart) avulla ja tarkista sitten tukimatriisi [yhteensopivuussivulta](/fi/docs/compatibility). Skriptiesi kutsumaa .NET-koodia varten lue [C#-opas](/fi/languages/csharp).

## Moottorin yksityiskohdat

- PowerShell-tuki kattaa `.ps1`-, `.psm1`- ja `.psd1`-tiedostot. Funktiot ja luokkien metodit ovat kutsuttavia, ja luokat ja luettelotyypit ovat tyyppejä.
- PowerShell-koodille standardikirjastosuodatin on pois päältä, joten cmdlet-kutsut kuten `Get-ChildItem` jäävät graafiin omien funktioidesi rinnalle.
- Funktion sisäiset luvut ja kirjoitukset liitetään kyseiseen funktioon eikä moduuliin.

## Hyödylliset MCP-liittymäkohdat

- `find_symbol`: Käytä sitä edistyneelle funktiolle tai luokalle, kun tarvitset määritelmän ja kutsujat.
- `dependency_search`: Käytä incoming-läpikäyntiä cmdletille kuten `Restart-Service` nähdäksesi, mitkä skriptit kutsuvat sitä.
- `get_task_context`: Käytä sitä kehotteisiin kuten ”jäljitä, mitä `Deploy-Site` tekee alusta loppuun”.
