# Maguyva में PowerShell: स्क्रिप्ट और मॉड्यूल के लिए कोड ग्राफ़

Canonical source: https://maguyva.ai/hi/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, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट स्क्रिप्ट और मॉड्यूल के पार फ़ंक्शन, क्लास और cmdlet कॉल को ट्रेस कर सकें।

## सपोर्ट स्नैपशॉट

- टियर: AST और सिंबल सपोर्ट
- शेल
- एक्सटेंशन: .ps1, .psd1, .psm1
- सिंटैक्स-अवेयर सर्च और स्ट्रक्चरल कॉन्टेक्स्ट के लिए असली AST पार्सिंग।
- नामित सिंबल सिमेंटिक लुकअप और क्रॉस-रेफ़रेंस को फ़ीड करते हैं। रिलेशनशिप एक्सट्रैक्शन सक्षम होने पर ग्राफ़ नेविगेशन उपलब्ध होता है।
- यह भाषा ग्राफ़-अवेयर सर्च में सिंबल्स और रिलेशनशिप्स जोड़ती है; सपोर्टेड एज प्रकार इसके नेटिव कंस्ट्रक्ट्स के अनुसार बदलते हैं।
- AST पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

- इन्फ़्रास्ट्रक्चर और ऑपरेशन टीमें जिनके पास `.ps1` और `.psm1` के बड़े संग्रह हैं और जिनकी स्क्रिप्ट एक-दूसरे के फ़ंक्शन कॉल करती हैं।
- एडवांस्ड फ़ंक्शन, क्लास और एनम से बने PowerShell मॉड्यूल।
- ऑटोमेशन रनबुक जहाँ किसी बदलाव से पहले एजेंट को देखना होता है कि कौन-सी स्क्रिप्ट किसी सर्विस, फ़ाइल शेयर या रजिस्ट्री कुंजी को छूती हैं।

## एजेंट वर्कफ़्लो

- किसी एडवांस्ड फ़ंक्शन के पैरामीटर बदलने से पहले उसके सभी कॉलर ढूँढना।
- किसी रनबुक को बदलने से पहले `Restart-Service` जैसे cmdlet को कॉल करने वाली स्क्रिप्ट की सूची बनाना।
- किसी मॉड्यूल को रीफ़ैक्टर करने से पहले यह मैप करना कि कौन-से फ़ंक्शन किसी साझा वेरिएबल में लिखते हैं।

## PowerShell सतही AI टूल को कहाँ उलझाता है

आपके फ़ंक्शन और बिल्ट-इन cmdlet एक ही नामकरण शैली अपनाते हैं। `Get-Invoice` और `Get-ChildItem` एक जैसे दिखते हैं, इसलिए जो टूल क्रिया के आधार पर "बिल्ट-इन" कमांड हटा देता है, वह आपके फ़ंक्शन भी हटा देता है। स्क्रिप्ट एक ही फ़ाइल में मॉड्यूल-स्तर का कोड, फ़ंक्शन, क्लास और स्क्रिप्ट ब्लॉक भी मिला देती हैं, जिससे यह जानना कठिन होता है कि कोई पंक्ति किस फ़ंक्शन की है।

Maguyva दोनों तरह के कॉल बनाए रखता है और हर कॉल को उस फ़ंक्शन से जोड़ता है जिसके भीतर वह है।

## Maguyva, PowerShell कोड से क्या निकालता है

Maguyva `.ps1`, `.psm1` और `.psd1` फ़ाइलों को कवर करता है। फ़ंक्शन और क्लास मेथड कॉलेबल के रूप में, और क्लास तथा एनम टाइप के रूप में निकाले जाते हैं। स्क्रिप्ट और मेथड के पैरामीटर ट्रैक किए जाते हैं, और किसी फ़ंक्शन के भीतर के रीड और राइट मॉड्यूल से नहीं, उसी फ़ंक्शन से जोड़े जाते हैं।

cmdlet कॉल ग्राफ़ में बने रहते हैं। 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`)

## ज्ञात सीमाएँ

- क्योंकि cmdlet कॉल बनाए रखे जाते हैं, `Write-Host` और `Select-Object` जैसे बहुत आम cmdlet के बहुत सारे इनकमिंग एज होते हैं। जब आपको केंद्रित कॉल ग्राफ़ चाहिए, तो अपने फ़ंक्शन से शुरू करें।
- `Import-Module` और डॉट-सोर्सिंग सामान्य कमांड हैं, इसलिए `structural_search` में `imports` प्रीसेट कुछ भी नहीं चुनता। इनकी सूची के लिए `text_pattern_search` इस्तेमाल करें।

## अगले कदम

[क्विकस्टार्ट](/hi/docs/quickstart) से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स [कम्पैटिबिलिटी पेज](/hi/docs/compatibility) पर देखें। आपकी स्क्रिप्ट जिस .NET कोड को कॉल करती हैं, उसके लिए [C# गाइड](/hi/languages/csharp) पढ़ें।

## इंजन विवरण

- PowerShell सपोर्ट `.ps1`, `.psm1` और `.psd1` फ़ाइलों को कवर करता है। फ़ंक्शन और क्लास मेथड कॉलेबल हैं; क्लास और एनम टाइप हैं।
- PowerShell के लिए स्टैंडर्ड लाइब्रेरी फ़िल्टर बंद है, इसलिए `Get-ChildItem` जैसे cmdlet कॉल आपके अपने फ़ंक्शन के साथ ग्राफ़ में बने रहते हैं।
- किसी फ़ंक्शन के भीतर के रीड और राइट मॉड्यूल से नहीं, उसी फ़ंक्शन से जोड़े जाते हैं।

## उपयोगी MCP एंट्री पॉइंट

- `find_symbol`: किसी एडवांस्ड फ़ंक्शन या क्लास के लिए इस्तेमाल करें जब आपको परिभाषा और कॉलर चाहिए।
- `dependency_search`: यह देखने के लिए इनकमिंग ट्रैवर्सल इस्तेमाल करें कि कौन-सी स्क्रिप्ट `Restart-Service` जैसे cmdlet को कॉल करती हैं।
- `get_task_context`: "ट्रेस करो कि `Deploy-Site` शुरू से अंत तक क्या करता है" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
