Nhận định nghĩa của hàm và lặp lại mã


18

Tôi đã xác định một hàm động trong powershell, như thế này:

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

Sau đó, tôi có thể chỉ cần gõ testvà chạy chức năng đó, chuyển nó sang các lệnh khác, vv Khá tiện dụng.

Có cách nào tôi có thể có được định nghĩa của lệnh không? Tôi có thể lặp lại mã cho chức năng của mình testkhông? (Không cần phải quay lại lịch sử của tôi đến nơi tôi đã xác định nó?)

Câu trả lời:


21

Đối với một hàm gọi là test:

$function:test

Hoặc nếu tên hàm chứa dấu gạch nối (ví dụ test-function:):

${function:test-function}

Cách khác:

(Get-Command test).Definition

5
(Get-Command Test).Definition

Đó là cách tôi thường nhận được định nghĩa.


Trong$profile function def ($funcname) { (Get-Command $funcname).Definition }
Hẻm núi Kolob

3

Các câu trả lời hiện tại sẽ chỉ hoạt động cho các chức năng đã được tạo cục bộ. Bạn có thể, ví dụ, xem định nghĩa của các hàm riêng như thế nào Get-EventLog.

Để biết danh sách tất cả các chức năng có sẵn, bạn có thể chạy:

Get-ChildItem Function::

Bất kỳ trong số này có thể được truyền vào ${function:myFn}hoặc(Get-Command myFn).Definition

Nếu bạn muốn xem lén các hàm riêng, bạn có thể chạy mã này :

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.