28 votos

Powershell: Referencia a una propiedad que contiene un espacio

Yo soy la importación de un archivo CSV mediante powershell.

El problema es que el título de una de las columnas es "Tiempo Restante - Horas". Así que me estoy poniendo de una secuencia de objetos, y se asigna a la propiedad "Tiempo Restante - Horas".

¿Cuál es la sintaxis para hacer referencia a esta propiedad?

por ejemplo

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

devuelve

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

pero si me escriba

$case.Remaining Time - Hours

Me sale "testigo Inesperado 'Tiempo' en la expresión o instrucción"

46voto

mjolinor Puntos 23012

Propiedades con espacios incrustados tiene que ser citado al hacer referencia a ellos:

 $case."Remaining Time - Hours"

13voto

Keith Hill Puntos 73162

Solo para agregar, el nombre de la propiedad en sí misma puede ser una variable, por ejemplo:

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

10voto

ravikanth Puntos 9573

O también puedes envolver en que la propiedad de { }. Como este:

 $case.{Remaining Time - Hours}

6voto

mjolinor Puntos 23012

FWIW, si llega a ser dolor para el código con, usted puede agregar un alias de la propiedad:

 $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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X