【问题标题】:Powershell dot notation vs select-objectPowershell点表示法与选择对象
【发布时间】:2015-05-10 08:31:58
【问题描述】:

有人可以向我解释一下 Powershell 中的点表示法和 select-object 有什么区别吗? 这两种访问属性的方法在内部有何不同?

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

【问题讨论】:

    标签: powershell syntax properties


    【解决方案1】:

    select-object cmdlet 将结果包装在一个新对象中。要查看差异(查看类型),请使用 get-member cmdlet。

    (ls).Name | get-member
    

    ls | select-object Name | get-member
    

    【讨论】:

    • 谢谢。我现在明白其中的区别了。似乎(ls).name 等于ls | select-object -expandproperty name。是否可以在不扩展属性的情况下使用点符号?
    • 没有。点符号读取您指定的属性的值,就像ls | % { $_.name } 一样,所以如果您希望它作为新对象中的属性,您必须使用Select-ObjectNew-Object(在foreach 循环中) .
    猜你喜欢
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2015-12-21
    相关资源
    最近更新 更多