Powershell点表示法与选择对象

Łuk*_*asz 6 syntax powershell properties

有人可以告诉我Powershell中点表示法和选择对象之间有什么区别吗?这两种访问属性的方法在内部有何不同?

我已经注意到,运行(ls).name给出的结果基本上与运行时给出的结果相同,ls | select-object name而运行ls | select-object name | export-csv foo.csv(ls).name | export-csv foo.csv给出的文件长度正确。在这两种情况下,gettype()返回Object []

Pet*_*der 5

select-objectcmdlet将结果包装到一个新对象中。若要查看差异(请查看类型),请使用get-membercmdlet。

(ls).Name | get-member
Run Code Online (Sandbox Code Playgroud)

ls | select-object Name | get-member
Run Code Online (Sandbox Code Playgroud)

  • 否。点表示法正在读取您指定的属性的值,就像`ls | %{$ _。name}`会这样,因此如果您希望将其作为New Object中的属性,则必须使用Select-Object或New-Object(在foreach循环中)。 (2认同)