2017-05-22 4 views
6

Wenn ich die folgende Zeile in der Powershell ISE-Editor eingeben, bekomme ich Intellisense nach dem Punkt-Operator in $_ Variable:Intellisense funktioniert nicht von benutzerdefinierten Cmdlets (Powershell ISE) nach kochend

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

In diesem Fall $_ ist eine Instanz von System.IO.FileSystemInfo. Der Editor wird alle zugreifbaren Mitglieder dieses Objekts ordnungsgemäß auflisten.

Nun, wenn ich schreibe:

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

GetFile | foreach { $_.FullName } 

Das Skript läuft gut, aber Intellisense funktioniert nicht nach dem Punkt-Operator in $_.

Fehle ich eine Syntax, damit IntelliSense richtig funktioniert? Vielleicht eine Anmerkung, um den Rückgabewert zu "dokumentieren"?

Antwort

5

Sie suchen die OutputType Attribut über dem Param Abschnitt:

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

    ) 

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

Bitte verwenden Sie eine Datei umbenennen zu reflektieren genehmigt Verben e. G. Get-File. Beachten Sie auch, dass die Anweisung return in PowerShell nicht erforderlich ist. Daher sollte Ihre Funktion wie folgt aussehen:

Verwandte Themen