Powershellを使用してCSVファイルをインポートしています。
問題は、いずれかの列のタイトルが「残り時間-時間」であるということです。そのため、オブジェクトのシーケンスを取得していますが、実際には「残り時間-時間」プロパティが割り当てられています。
このプロパティを参照する構文は何ですか?
例えば
Import-Csv AllOpenCases.csv | % {$case = $_ }
$case | get-member
戻り値
Category : Inquiry
Starred : No
Remaining Time - Hours : 22.5
しかし、私が入力した場合
$case.Remaining Time - Hours
「式または文に予期しないトークン 'Time'」が表示されます
スペースが埋め込まれたプロパティは、参照するときに引用する必要があります。
$case."Remaining Time - Hours"
追加するだけで、プロパティ名自体を変数にすることができます。例:
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
または、{}でそのプロパティをラップすることもできます。このような:
$case.{Remaining Time - Hours}
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