J'importe un fichier CSV à l'aide de PowerShell.
Le problème est que le titre d'une des colonnes est "Temps restant - Heures". Je reçois donc une séquence d'objets, et la propriété "Temps restant - Heures" lui est en fait attribuée.
Quelle est la syntaxe pour faire référence à cette propriété?
par exemple
Import-Csv AllOpenCases.csv | % {$case = $_ }
$case | get-member
retour
Category : Inquiry
Starred : No
Remaining Time - Hours : 22.5
mais si je tape
$case.Remaining Time - Hours
J'obtiens "Jeton inattendu 'Time' dans l'expression ou la déclaration"
Les propriétés avec des espaces intégrés doivent être citées lorsqu'elles sont référencées:
$case."Remaining Time - Hours"
Juste pour ajouter, le nom de la propriété peut lui-même être une variable, par exemple:
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
Ou vous pouvez également envelopper cette propriété dans {}. Comme ça:
$case.{Remaining Time - Hours}
FWIW, s'il devient difficile de coder avec, vous pouvez ajouter une propriété d'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