如果我在 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 正常工作的语法?也许是“记录”返回值的注释?
最佳答案
您正在寻找 OutputType
Param 部分上方的属性:
function GetFile {
[OutputType([System.IO.FileInfo])]
Param(
)
return [System.IO.FileInfo]::new(".\ATextFile.txt")
}
请考虑重命名您的文件以反射(reflect)批准的动词 e。 G。
Get-File
.另请注意 return
PowerShell 中不需要语句,因此您的函数应如下所示:function Get-File
{
[OutputType([System.IO.FileInfo])]
Param
(
)
[System.IO.FileInfo]::new(".\ATextFile.txt")
}
关于powershell - 从自定义 cmdlet (Powershell ISE) 进行管道传输后,Intellisense 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114119/