Powershell: ссылка на свойство, которое содержит пробел - PullRequest
51 голосов
/ 01 февраля 2011

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

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

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

например

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

1010 * возвращается *

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

но если я наберу

$case.Remaining Time - Hours

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

Ответы [ 4 ]

89 голосов
/ 01 февраля 2011

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

 $case."Remaining Time - Hours"
23 голосов
/ 01 февраля 2011

Просто добавьте, что имя свойства само может быть переменной, например:

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
17 голосов
/ 01 февраля 2011

Или вы можете также обернуть это свойство в {}. Как это:

 $case.{Remaining Time - Hours}
11 голосов
/ 01 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...