管道中的下一个命令如何识别我的输出对象属性名称?
PowerShell控制台将自动完成属性名称,这非常有用。仅键入“fulln”并按Tab将生成“FullName”。
Get-ChildItem | Select-Object -Property fulln<TAB>
我编写的脚本生成System.IO.FileInfo对象。
PS C:\> (Find-MyFile -Files @('whatiwant.txt','whatelseiwant.txt')[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False FileInfo System.IO.FileSystemInfo
但是,对于随后的“选择对象”命令,不会自动完成FileInfo属性。
PS C:\> (Find-MyFile -Files @('whatiwant.txt','whatelseiwant.txt') | Select-Object -Property lastw<TAB>
我需要做什么来获得自动完成?这是否需要创建一个.xml文件来格式化?
1条答案
按热度按时间gmxoilav1#
使用**
[OutputType()]
属性**,如概念性about_Functions_OutputTypeAttribute帮助主题中所述:然后,Tab键完成将根据指定类型的示例的属性完成。
请注意,您可以拥有 * 多个 、 特定于参数集的 *
[OutputType()]
属性;下面是一个(人为)示例:Find-MyFile | Select-Object
Tab,则会获得与File
参数集的输出类型(即[System.IO.FileInfo]
)相关的属性。Find-MyFile -Date | Select-Object
Tab,则会获得与Date
参数集的输出类型(即[datetime]
)相关的属性。通常,请注意此属性实际上是对调用方的非强制 * 承诺 *:由您的函数来确保它输出的对象实际上是该类型的。