Подтвердить что ты не робот

Powershell: ссылается на свойство, содержащее пробел

Я импортирую файл CSV с помощью powershell.

Проблема заключается в том, что заголовок одного из столбцов - "Оставшееся время - часы". Поэтому я получаю последовательность объектов, и на самом деле ей присвоено свойство "Оставшееся время - часы".

Каков синтаксис для ссылки на это свойство?

например,

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

возвращает

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

но если я напечатаю

$case.Remaining Time - Hours

Я получаю "Неожиданный токен" Время "в выражении или выражении"

4b9b3361

Ответ 1

Свойства со встроенными пространствами должны быть указаны при ссылке:

 $case."Remaining Time - Hours"

Ответ 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

FWIW, если вам будет больно писать код, вы можете добавить свойство alias:

 $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