2017-05-22 13 views
6

Gdybym wpisz następujący wiersz w edytorze PowerShell ISE, mam Intellisense po operatorze kropka w $_ zmiennej:Intellisense nie działa po rurociągów z niestandardowego apletu polecenia PowerShell (ISE)

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

W tym przypadku , $_ jest instancją System.IO.FileSystemInfo. Edytor poprawnie wyświetli listę wszystkich dostępnych elementów z tego obiektu.

Teraz, gdy piszę:

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

GetFile | foreach { $_.FullName } 

Skrypt działa poprawnie, ale Intellisense nie działa po operatorze kropka w $_.

Czy brakuje mi składni, aby funkcja IntelliSense działała poprawnie? Może adnotacja do "udokumentowania" zwracanej wartości?

Odpowiedz

5

Szukasz atrybutu powyżej sekcji Param OutputType:

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

    ) 

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

Proszę zwrócić uwagę, aby zmienić nazwę pliku do zastanowienia zatwierdzonych czasowniki e. sol. Get-File. Zwróć też uwagę, że instrukcja return nie jest wymagana w PowerShellu, więc Twoja funkcja powinna wyglądać następująco:

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

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