如果我在PowerShell ISE编辑器中输入以下行,我会在$_
变量中的点运算符后得到Intellisense:
Get-ChildItem ATextFile.txt | foreach { $_.FullName }
在这种情况下,$_
是System.IO.FileSystemInfo
的实例。编辑器将正确列出此对象中的所有可访问成员。
现在,如果我写:
function GetFile {
return [System.IO.FileInfo]::new(".\ATextFile.txt")
}
GetFile | foreach { $_.FullName }
脚本运行正常,但Intellisense在$_
中的点运算符后无效。
我是否缺少使IntelliSense正常工作的语法?也许是一个“记录”返回值的注释?
答案 0 :(得分:5)
您正在寻找 Param 部分上方的OutputType
属性:
function GetFile {
[OutputType([System.IO.FileInfo])]
Param(
)
return [System.IO.FileInfo]::new(".\ATextFile.txt")
}
请考虑重命名您的文件以反映批准的动词 e。 G。 Get-File
。另请注意,PowerShell中不需要return
语句,因此您的函数应如下所示:
function Get-File
{
[OutputType([System.IO.FileInfo])]
Param
(
)
[System.IO.FileInfo]::new(".\ATextFile.txt")
}