Powershell:引用包含空格的属性

问题描述 投票:0回答:5

我正在使用 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
5个回答
145
投票

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

 $case."Remaining Time - Hours"

35
投票

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

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

29
投票

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

 $case.{Remaining Time - Hours}

15
投票

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

0
投票

我认为这确实很旧,但你也可以这样做:

$y | Select-Object ("Serial Number", "Requester Name")
© www.soinside.com 2019 - 2024. All rights reserved.