2017-05-22 17 views
6

Nếu tôi gõ dòng sau trong trình soạn thảo PowerShell ISE, tôi nhận được Intellisense sau khi các nhà điều hành dấu chấm trong $_ biến:Intellisense không hoạt động sau khi đường ống từ lệnh tùy chỉnh (Powershell ISE)

Get-ChildItem ATextFile.txt | foreach { $_.FullName } 

Trong trường hợp này , $_ là phiên bản của System.IO.FileSystemInfo. Trình soạn thảo sẽ liệt kê đúng tất cả các thành viên có thể truy cập từ đối tượng này.

Bây giờ, nếu tôi viết:

function GetFile { 
    return [System.IO.FileInfo]::new(".\ATextFile.txt") 
} 

GetFile | foreach { $_.FullName } 

Kịch bản chạy tốt, nhưng Intellisense không hoạt động sau khi các nhà điều hành dấu chấm trong $_.

Tôi có thiếu cú ​​pháp để làm cho IntelliSense hoạt động chính xác không? Có thể một chú thích để "tài liệu" giá trị trả về?

Trả lời

5

Bạn đang tìm kiếm OutputType thuộc tính phía trên phần Param:

function GetFile { 
    [OutputType([System.IO.FileInfo])] 
    Param(

    ) 

    return [System.IO.FileInfo]::new(".\ATextFile.txt") 
} 

Hãy cân nhắc để đổi tên tập tin của bạn để phản ánh động từ đã được phê duyệt e. g. Get-File. Cũng lưu ý rằng tuyên bố return là không cần thiết trong PowerShell, do đó chức năng của bạn sẽ trông giống như sau:

function Get-File 
{ 
    [OutputType([System.IO.FileInfo])] 
    Param 
    (
    ) 

    [System.IO.FileInfo]::new(".\ATextFile.txt") 
} 
Các vấn đề liên quan