2011-02-01 64 views
43

我正在使用PowerShell導入CSV文件。Powershell:引用包含空格的屬性

問題是,其中一列的標題是「剩餘時間 - 小時」。 因此,我得到一系列對象,並且它實際上分配了屬性「剩餘時間 - 小時」。

引用此屬性的語法是什麼?

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

回報

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

,但如果我鍵入

$case.Remaining Time - Hours 

我得到 「意外令牌 '時間' 在表達式或語句」

+4

@Kannabiran - 數點:1)在計算器上的政策是,如果一個問題是不是在這個網站回答那麼可以問,計算器往往是呼籲開發者的第一選擇。 2)我在三年前發佈了這個問題,在這段時間裏,它收到了18個upvotes和近6000個視圖,所以它被證明對其他人有用。 – 2014-05-29 03:51:29

+0

同意你的意見。 – Kannabiran 2014-05-29 04:02:54

回答

75

屬性與嵌入式spac在引用它們時必須引用:

$case."Remaining Time - Hours" 
+0

過去幾周你的幫助很大 - 謝謝。很好,一個問題最終會給你很高的評價 - 有趣的是這是最簡單的問題。 :-) – 2011-02-06 22:43:34

+3

謝謝。網站沒有任何意圖,但我認爲這樣的評論比點和徽章更好。 – mjolinor 2011-02-07 02:38:26

+0

真的很好! @mjolinor – Ram 2016-12-22 09:40:07

15

或者您也可以在{}中包裝該屬性。就像這樣:

$case.{Remaining Time - Hours} 
21

我想補充,屬性名本身可以是一個變量如:

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 
9

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