【问题标题】:Powershell: Reference a property that contains a spacePowershell:引用包含空格的属性
【发布时间】:2011-06-18 23:19:07
【问题描述】:

我正在使用 powershell 导入 CSV 文件。

问题是,其中一列的标题是“剩余时间 - 小时数”。 所以我得到了一系列对象,它实际上被分配了属性“剩余时间 - 小时”。

引用此属性的语法是什么?

例如

Import-Csv AllOpenCases.csv | % {$case = $_ }
$case | get-member

返回

Category               : Inquiry
Starred                : No
Remaining Time - Hours : 22.5

但如果我输入

$case.Remaining Time - Hours

我在表达式或语句中得到“意外的标记‘时间’”

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    FWIW,如果编写代码很麻烦,您可以添加别名属性:

     $caseprops = @"
     Category = Inquiry
     Starred = No
     Remaining Time - Hours = 22.5
     "@
     $case = new-object psobject -property ($caseprops | convertfrom-stringdata)
    
     $case | add-member aliasproperty "RT" "Remaining Time - Hours"
    
     $case | fl
    
     Remaining Time - Hours : 22.5
     Starred                : No
     Category               : Inquiry
     RT                     : 22.5
    

    【讨论】:

    • 我喜欢您创建对象的方式。之前没见过convertfrom-stringdata...
    【解决方案2】:

    只是补充一下,属性名称本身可以是一个变量,例如:

    PS> $o = new-object psobject -prop @{'first name' = 'John'; 'last name' = 'Doe'}
    PS> $o
    
    last name                                         first name
    ---------                                         ----------
    Doe                                               John
    
    
    PS> $prop = 'first name'
    PS> $o.$prop
    John
    

    【讨论】:

      【解决方案3】:

      或者您也可以将该属性包装在 { } 中。像这样:

       $case.{Remaining Time - Hours}
      

      【讨论】:

        【解决方案4】:

        带有嵌入空格的属性在被引用时必须被引用:

         $case."Remaining Time - Hours"
        

        【讨论】:

        • 过去几周你帮了大忙 - 谢谢。很好,一个问题最终给了你很高的代表——有趣的是,这是最简单的问题。 :-)
        • 谢谢。无意冒犯该网站,但我认为这样的 cmets 比积分和徽章更好。
        • 真的很好! @mjolinor
        • 这也可以通过 CSV 对象找到。 $csv = Import-Csv filename.csv 然后键入带有点 $csv. 的对象名称,并多次点击 TAB 以查看字段。 $csv | ft -a 可用于检查 CSV 文件是否正确加载。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 2016-12-30
        • 2014-07-31
        • 1970-01-01
        相关资源
        最近更新 更多