2012-07-27 14 views
12

lectura XML de un archivo en una variable se puede hacer así:¿Casting en powershell? ¿Sintaxis extraña?

[xml]$x=get-content myxml.xml 

Pero por qué no:

$x=[xml]get-content myxml.xml 

Lo que da:

Unexpected token 'get-content' in expression or statement. 
At line:1 char:20 
+ $x=[xml]get-content <<<< myxml.xml 
    + CategoryInfo   : ParserError: (get-content:String) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : UnexpectedToken 

Eso es: ¿Por qué el operación de lanzamiento realizada en el lado izquierdo del signo igual, típicamente en los lenguajes de programación el lanzamiento se realiza en el lado derecho como (por ejemplo) en java:

a=(String)myobject; 

Respuesta

21
$x=[xml](get-content myxml.xml) 
+0

¡Gracias! ¿Alguien sabe por qué se necesitan estos corchetes? – monojohnny

+7

Porque 'get-content myxml.xml' es una expresión; '(get-content myxml.xml)' es un objeto. ¡Necesitas tener un objeto para comenzar a lanzarlo a otra cosa! – SpellingD

+2

Para aumentar un poco esto, los paréntesis alrededor del cmdlet fuerzan a la expresión a resolverse. Luego, la expresión resuelta, que ahora es un objeto, se pasa al operador de transmisión. –

Cuestiones relacionadas