Ottieni la definizione della funzione e fai eco al codice


18

Ho definito una funzione dinamica in PowerShell, in questo modo:

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

Quindi posso semplicemente digitare tested eseguire quella funzione, collegandola ad altri comandi, ecc. Molto utile.

C'è un modo per ottenere la definizione del comando? Posso fare eco al codice per la mia funzione test? (Senza dover tornare indietro nella mia storia fino a dove l'ho definita?)

Risposte:


21

Per una funzione chiamata test:

$function:test

Oppure se il nome della funzione contiene un trattino (ad es. test-function):

${function:test-function}

In alternativa:

(Get-Command test).Definition

5
(Get-Command Test).Definition

Ecco come ottengo normalmente le definizioni.


In$profile function def ($funcname) { (Get-Command $funcname).Definition }
Kolob Canyon,

3

Le risposte correnti funzioneranno solo per le funzioni create localmente. È possibile, ad esempio, vedere la definizione di funzioni native come Get-EventLog.

Per un elenco di tutte le funzioni disponibili, è possibile eseguire:

Get-ChildItem Function::

Ognuno di questi può essere passato in ${function:myFn}o(Get-Command myFn).Definition

Se vuoi dare un'occhiata alle funzioni native, puoi eseguire questo codice :

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.