İçeriğe atla
cd /languages
  • Windows otomasyonu
  • Shell
  • AST ve sembol desteği

Maguyva'da PowerShell: betikler ve modüller için kod grafları

Maguyva, PowerShell dilini AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları betikler ve modüller boyunca fonksiyonları, sınıfları ve cmdlet çağrılarını izleyebilir.

PowerShell yüzeysel yapay zeka araçlarını nerede şaşırtır

Sizin fonksiyonlarınız ve yerleşik cmdlet’ler aynı adlandırma tarzını kullanır. Get-Invoice ve Get-ChildItem aynı görünür; bu yüzden “yerleşik” komutları fiile göre eleyen bir araç sizin fonksiyonlarınızı da atar. Betikler ayrıca modül düzeyindeki kodu, fonksiyonları, sınıfları ve betik bloklarını tek dosyada karıştırır; bir satırın hangi fonksiyona ait olduğunu anlamak zorlaşır.

Maguyva her iki çağrı türünü de korur ve her çağrıyı içinde bulunduğu fonksiyona atar.

Maguyva PowerShell kodundan neleri çıkarır

Maguyva .ps1, .psm1 ve .psd1 dosyalarını kapsar. Fonksiyonlar ve sınıf metotları çağrılabilir öğe, sınıflar ve numaralandırmalar ise tür olarak çıkarılır. Betik ve metot parametreleri izlenir; bir fonksiyon içindeki okuma ve yazmalar modüle değil o fonksiyona atanır.

Cmdlet çağrıları grafta kalır. PowerShell, çoğu dilin kullandığı standart kütüphane filtresini uygulamaz; bu yüzden Write-Host, Get-ChildItem ve Restart-Service, kendi Get-* ve Set-* fonksiyonlarınızın yanında çağrı kenarları olarak görünür. Ajan hangi betiklerin bir servisi yeniden başlattığını ya da hangi fonksiyonların konsola yazdığını sorup yapısal bir yanıt alabilir.

PowerShell için hiçbir ilişki türü uygulanamaz olarak işaretlenmemiştir; bu yüzden graf ayrıca sınıf kalıtımını ve arayüz uygulamasını, örneklemeyi, kontrol akışını ve okuma ve yazmaları kaydeder.

Örnek ajan istemleri

  • “Invoke-Backup’u kim çağırıyor ve hangi zamanlanmış betiklerden?” (find_symbol, ardından dependency_search incoming)
  • “Hangi fonksiyonlar Restart-Service’i çağırıyor?” (dependency_search)
  • “Deploy-Site’in baştan sona ne yaptığını izle.” (get_task_context)

Bilinen sınırlar

  • Cmdlet çağrıları korunduğu için Write-Host ve Select-Object gibi çok yaygın olanların çok sayıda gelen kenarı olur. Odaklı bir çağrı grafı istediğinizde kendi fonksiyonunuzdan başlayın.
  • Import-Module ve dot-sourcing sıradan komutlardır; bu yüzden structural_search içindeki imports hazır ayarı hiçbir şey seçmez. Bunları listelemek için text_pattern_search kullanın.

Sonraki adımlar

Hızlı başlangıç ile bir repo bağlayın, ardından destek matrisi için uyumluluk sayfasına bakın. Betiklerinizin çağırdığı .NET kodu için C# rehberini okuyun.

En uygun kullanım

  • > Betiklerinin birbirinin fonksiyonlarını çağırdığı büyük `.ps1` ve `.psm1` varlıklarına sahip altyapı ve operasyon ekipleri.
  • > Gelişmiş fonksiyonlar, sınıflar ve numaralandırmalardan oluşan PowerShell modülleri.
  • > Ajanların bir değişiklikten önce hangi betiklerin bir servise, dosya paylaşımına veya kayıt defteri anahtarına dokunduğunu görmesi gereken otomasyon runbook'ları.

Ajan iş akışları

  • > Gelişmiş bir fonksiyonun parametrelerini değiştirmeden önce tüm çağıranlarını bulmak.
  • > Bir runbook'u değiştirmeden önce `Restart-Service` gibi bir cmdlet'i çağıran betikleri listelemek.
  • > Bir modülü yeniden düzenlemeden önce paylaşılan bir değişkene yazan fonksiyonları haritalamak.

Motor ayrıntıları

  • > PowerShell desteği `.ps1`, `.psm1` ve `.psd1` dosyalarını kapsar. Fonksiyonlar ve sınıf metotları çağrılabilir öğelerdir; sınıflar ve numaralandırmalar türdür.
  • > PowerShell için standart kütüphane filtresi kapalıdır; bu yüzden `Get-ChildItem` gibi cmdlet çağrıları kendi fonksiyonlarınızın yanında grafta kalır.
  • > Bir fonksiyon içindeki okuma ve yazmalar modüle değil o fonksiyona atanır.

Yararlı MCP giriş noktaları

  • find_symbol

    Tanıma ve çağıranlara ihtiyaç duyduğunuzda gelişmiş bir fonksiyon veya sınıf için kullanın.

  • dependency_search

    Hangi betiklerin `Restart-Service` gibi bir cmdlet'i çağırdığını görmek için incoming geçişi kullanın.

  • get_task_context

    "`Deploy-Site`'ın baştan sona ne yaptığını izle" gibi istemler için kullanın.