फ़ंक्शन की परिभाषा प्राप्त करें और कोड को गूंजें


19

मैंने एक गतिशील फ़ंक्शन को पावरशेल में परिभाषित किया है, जैसे:

> function test { dir -r -fil *.vbproj | ft directory, name }

तब मैं केवल testउस फ़ंक्शन को टाइप कर सकता हूं और उसे चला सकता हूं , इसे अन्य कमांड्स पर पाइप कर सकता हूं , इत्यादि।

क्या कोई तरीका है जिससे मुझे कमांड की परिभाषा मिल सकती है? क्या मैं अपने फ़ंक्शन के लिए कोड को प्रतिध्वनित कर सकता हूं test? (अपने इतिहास के माध्यम से वापस जाने के बिना जहां मैंने इसे परिभाषित किया था?)

जवाबों:


22

नामक एक समारोह के लिए test:

$function:test

या यदि फ़ंक्शन नाम में एक हाइफ़न (जैसे। test-function):

${function:test-function}

वैकल्पिक रूप से:

(Get-Command test).Definition

5
(Get-Command Test).Definition

इस तरह से मुझे आम तौर पर परिभाषाएँ मिलती हैं।


1
में$profile function def ($funcname) { (Get-Command $funcname).Definition }
Kolob Canyon

3

वर्तमान उत्तर केवल उन कार्यों के लिए काम करेंगे जो स्थानीय रूप से बनाए गए हैं। उदाहरण के लिए, आप मूल कार्यों की परिभाषा देख सकते हैं Get-EventLog

सभी उपलब्ध कार्यों की सूची के लिए, आप चला सकते हैं:

Get-ChildItem Function::

इन में से किसी में पारित किया जा सकता ${function:myFn}या(Get-Command myFn).Definition

यदि आप मूल कार्यों को देखना चाहते हैं, तो आप इस कोड को चला सकते हैं :

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.