¿Cómo hacer que Select-Object devuelva un tipo sin formato (por ejemplo, una cadena) en lugar de PSCustomObject?

StackOverflow https://stackoverflow.com/questions/618749

  •  03-07-2019
  •  | 
  •  

Pregunta

El siguiente código me da una matriz de PSCustomObjects, ¿cómo puedo hacer que devuelva una matriz de cadenas?

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

El siguiente código me da una matriz de PSCustomObjects, ¿cómo puedo hacer que devuelva una matriz de cadenas?

<*>

(Como una pregunta secundaria, ¿cuál es la parte de psiscontainer? Copié eso de un ejemplo en línea)

Edición posterior a la aceptación: dos respuestas geniales, me gustaría poder marcar ambas. Han concedido la respuesta original.

.psiscontainer)}

(Como una pregunta secundaria, ¿cuál es la parte de psiscontainer? Copié eso de un ejemplo en línea)

Edición posterior a la aceptación: dos respuestas geniales, me gustaría poder marcar ambas. Han concedido la respuesta original.

¿Fue útil?

Solución

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {'hello'; 

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {'hello'; 

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {'hello'; 

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

$files = Get-ChildItem $directory -Recurse | Select-Object FullName | Where-Object {!(

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

Get-ChildItem $directory -Recurse

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

Select-Object FullName

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)}

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)}

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName; 1; 2; 3}

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)}

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.psiscontainer)} | foreach {

Solo debe seleccionar la propiedad que desea de los objetos. FullName en este caso.

<*>

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No aparece en el canal de salida.

.FullName}

Editar: Explicación para Mark, quién pregunta, " ¿Qué hace el foreach? ¿Qué es eso de enumeración? & Quot;

La explicación de Sung Meister es muy buena, pero agregaré un tutorial aquí porque podría ser útil.

El concepto clave es la tubería. Imagina una serie de bolas de pingpong rodando por un tubo estrecho, una tras otra. Estos son los objetos en la tubería. Cada etapa de la tubería, los segmentos de código separados por caracteres de la tubería (|), tiene una tubería que entra y una tubería que sale de ella. La salida de una etapa está conectada a la entrada de la siguiente etapa. Cada etapa toma los objetos a medida que llegan, les hace cosas y los envía de vuelta a la tubería de salida o envía nuevos objetos de reemplazo.

<*>

Get-ChildItem recorre el sistema de archivos creando objetos FileSystemInfo que representan cada archivo y directorio que encuentra, y los coloca en la canalización.

<*>

Select-Object toma cada objeto FileSystemInfo a medida que llega, toma la propiedad FullName (que es una ruta en este caso), coloca esa propiedad en un nuevo objeto personalizado que ha creado y coloca ese objeto personalizado en el oleoducto.

<*>

Esto es un filtro. Toma cada objeto, lo examina y lo envía de vuelta o lo descarta, dependiendo de alguna condición. Su código aquí tiene un error, por cierto. Los objetos personalizados que llegan aquí no tienen una propiedad psiscontainer. Esta etapa en realidad no hace nada. El código de Sung Meister es mejor.

<*>

Foreach, cuyo nombre largo es ForEach-Object, toma cada objeto a medida que llega, y aquí, toma la propiedad FullName, una cadena, de ella. Ahora, aquí está la parte sutil: cualquier valor que no se consuma, es decir, no es capturado por una variable o suprimido de alguna manera, se coloca en la tubería de salida. Como experimento, intente reemplazar esa etapa con esto:

<*>

En realidad probarlo y examinar la salida. Hay cuatro valores en ese bloque de código. Ninguno de ellos es consumido. Observe que todos aparecen en la salida. Ahora prueba esto:

<*>

Observe que uno de los valores está siendo capturado por una variable. No apar

Otros consejos

Para obtener la cadena del nombre de archivo que puede utilizar

$files = Get-ChildItem $directory -Recurse | Where-Object {!(

Para obtener la cadena del nombre de archivo que puede utilizar

<*>

El parámetro -ExpandProperty le permite recuperar un objeto según el tipo de propiedad especificada.

Pruebas adicionales muestran que esto no funcionó con V1, pero que la funcionalidad se corrigió a partir del V2 CTP3.

.psiscontainer)} | Select-Object -ExpandProperty FullName

El parámetro -ExpandProperty le permite recuperar un objeto según el tipo de propiedad especificada.

Pruebas adicionales muestran que esto no funcionó con V1, pero que la funcionalidad se corrigió a partir del V2 CTP3.

Para la pregunta # 1

He eliminado " objeto-seleccionado " parte: es redundante y se movió " donde " filtrar antes de " foreach " a diferencia de respuesta de dangph : filtre lo antes posible para que esté tratando solo con un subconjunto de lo que tiene que tratar en la próxima línea de tubería.

$files = Get-ChildItem $directory -Recurse | Where-Object {!

Para la pregunta # 1

He eliminado " objeto-seleccionado " parte: es redundante y se movió " donde " filtrar antes de " foreach " a diferencia de respuesta de dangph : filtre lo antes posible para que esté tratando solo con un subconjunto de lo que tiene que tratar en la próxima línea de tubería.

>pushd HKLM:\SOFTWARE
>ls | gm

Ese fragmento de código lee esencialmente

  • Obtener todos los archivos de la ruta de todos los archivos de forma recursiva (Get-ChildItem $ directory -Recurse)
  • Filtrar los directorios (donde -objeto {! $ _. PsIsContainer})
  • Solo se devuelve el nombre completo del archivo (foreach {$ _. FullName})
  • Guardar todos los nombres de archivos en $ archivos

Tenga en cuenta que para foreach {$ _. FullName} , en powershell, se devuelve la última declaración en un bloque de script ({...}), en este caso $ _. FullName del tipo cadena

Si realmente necesitas obtener un objeto en bruto, no necesitas hacer nada después de deshacerte de " seleccionar-objeto " Si utilizara Select-Object pero desea acceder al objeto en bruto, use " PsBase " ;, que es una pregunta totalmente diferente (tema): consulte " ¿Qué pasa con PSBASE, PSEXTENDED, PSADAPTED y PSOBJECT? " para más información sobre ese tema

Para la pregunta # 2

Y también el filtrado por ! $ _. PsIsContainer significa que está excluyendo objetos a nivel de contenedor. En su caso, está haciendo Get-ChildItem en un Proveedor del sistema de archivos (puede ver los proveedores de PowerShell a través de Get-PsProvider), por lo que el contenedor es un DirectoryInfo (carpeta)

PsIsContainer significa diferentes cosas bajo diferentes proveedores de PowerShell; por ejemplo, para el proveedor Registry , PsIsContainer es de tipo Microsoft.Win32.RegistryKey Prueba esto:

get-help foreach

[ACTUALIZACIÓN] a la siguiente pregunta: ¿Qué hace el foreach? ¿Qué es eso de enumerar? Para aclarar, " foreach " es un alias para " Foreach-Object " Puedes averiguarlo a través de,

get-alias foreach

- o -

<*>

Ahora en mi respuesta, " foreach " está enumerando cada instancia de objeto de tipo FileInfo devuelto de Canalización anterior (que ha filtrado directorios). FileInfo tiene una propiedad llamada FullName y eso es lo que " foreach " está enumerando sobre.
Y hace referencia al objeto pasado a través de la tubería a través de una variable de tubería especial llamada " $ _ " que es de tipo FileInfo dentro del contexto del bloque de script de " foreach " ;.

.PsIsContainer} | foreach {

Para la pregunta # 1

He eliminado " objeto-seleccionado " parte: es redundante y se movió " donde " filtrar antes de " foreach " a diferencia de respuesta de dangph : filtre lo antes posible para que esté tratando solo con un subconjunto de lo que tiene que tratar en la próxima línea de tubería.

<*>

Ese fragmento de código lee esencialmente

  • Obtener todos los archivos de la ruta de todos los archivos de forma recursiva (Get-ChildItem $ directory -Recurse)
  • Filtrar los directorios (donde -objeto {! $ _. PsIsContainer})
  • Solo se devuelve el nombre completo del archivo (foreach {$ _. FullName})
  • Guardar todos los nombres de archivos en $ archivos

Tenga en cuenta que para foreach {$ _. FullName} , en powershell, se devuelve la última declaración en un bloque de script ({...}), en este caso $ _. FullName del tipo cadena

Si realmente necesitas obtener un objeto en bruto, no necesitas hacer nada después de deshacerte de " seleccionar-objeto " Si utilizara Select-Object pero desea acceder al objeto en bruto, use " PsBase " ;, que es una pregunta totalmente diferente (tema): consulte " ¿Qué pasa con PSBASE, PSEXTENDED, PSADAPTED y PSOBJECT? " para más información sobre ese tema

Para la pregunta # 2

Y también el filtrado por ! $ _. PsIsContainer significa que está excluyendo objetos a nivel de contenedor. En su caso, está haciendo Get-ChildItem en un Proveedor del sistema de archivos (puede ver los proveedores de PowerShell a través de Get-PsProvider), por lo que el contenedor es un DirectoryInfo (carpeta)

PsIsContainer significa diferentes cosas bajo diferentes proveedores de PowerShell; por ejemplo, para el proveedor Registry , PsIsContainer es de tipo Microsoft.Win32.RegistryKey Prueba esto:

<*>

[ACTUALIZACIÓN] a la siguiente pregunta: ¿Qué hace el foreach? ¿Qué es eso de enumerar? Para aclarar, " foreach " es un alias para " Foreach-Object " Puedes averiguarlo a través de,

<*>

- o -

<*>

Ahora en mi respuesta, " foreach " está enumerando cada instancia de objeto de tipo FileInfo devuelto de Canalización anterior (que ha filtrado directorios). FileInfo tiene una propiedad llamada FullName y eso es lo que " foreach " está enumerando sobre.
Y hace referencia al objeto pasado a través de la tubería a través de una variable de tubería especial llamada " $ _ " que es de tipo FileInfo dentro del contexto del bloque de script de " foreach " ;.

.FullName}

Ese fragmento de código lee esencialmente

  • Obtener todos los archivos de la ruta de todos los archivos de forma recursiva (Get-ChildItem $ directory -Recurse)
  • Filtrar los directorios (donde -objeto {! $ _. PsIsContainer})
  • Solo se devuelve el nombre completo del archivo (foreach {$ _. FullName})
  • Guardar todos los nombres de archivos en $ archivos

Tenga en cuenta que para foreach {$ _. FullName} , en powershell, se devuelve la última declaración en un bloque de script ({...}), en este caso $ _. FullName del tipo cadena

Si realmente necesitas obtener un objeto en bruto, no necesitas hacer nada después de deshacerte de " seleccionar-objeto " Si utilizara Select-Object pero desea acceder al objeto en bruto, use " PsBase " ;, que es una pregunta totalmente diferente (tema): consulte " ¿Qué pasa con PSBASE, PSEXTENDED, PSADAPTED y PSOBJECT? " para más información sobre ese tema

Para la pregunta # 2

Y también el filtrado por ! $ _. PsIsContainer significa que está excluyendo objetos a nivel de contenedor. En su caso, está haciendo Get-ChildItem en un Proveedor del sistema de archivos (puede ver los proveedores de PowerShell a través de Get-PsProvider), por lo que el contenedor es un DirectoryInfo (carpeta)

PsIsContainer significa diferentes cosas bajo diferentes proveedores de PowerShell; por ejemplo, para el proveedor Registry , PsIsContainer es de tipo Microsoft.Win32.RegistryKey Prueba esto:

<*>

[ACTUALIZACIÓN] a la siguiente pregunta: ¿Qué hace el foreach? ¿Qué es eso de enumerar? Para aclarar, " foreach " es un alias para " Foreach-Object " Puedes averiguarlo a través de,

<*>

- o -

<*>

Ahora en mi respuesta, " foreach " está enumerando cada instancia de objeto de tipo FileInfo devuelto de Canalización anterior (que ha filtrado directorios). FileInfo tiene una propiedad llamada FullName y eso es lo que " foreach " está enumerando sobre.
Y hace referencia al objeto pasado a través de la tubería a través de una variable de tubería especial llamada " $ _ " que es de tipo FileInfo dentro del contexto del bloque de script de " foreach " ;.

Para V1, agregue el siguiente filtro a su perfil:

filter Get-PropertyValue([string]$name) { 

Para V1, agregue el siguiente filtro a su perfil:

gci . -r | ?{!

Para V1, agregue el siguiente filtro a su perfil:

filter Get-PropertyValue([string]$name) { 

Para V1, agregue el siguiente filtro a su perfil:

<*>

Entonces puedes hacer esto:

<*>

Por cierto, si está utilizando las Extensiones de la Comunidad de PowerShell ya tiene esto.

Con respecto a la capacidad de usar Select-Object-Exppand en V2, es un truco bonito pero no obvio y realmente no es para lo que Select-Object ni -Expand estaba destinado. -Expansión tiene que ver con el aplanamiento, como SelectMany de LINQ y Select-Object se trata de la proyección de múltiples propiedades en un objeto personalizado.

.$name }

Entonces puedes hacer esto:

<*>

Por cierto, si está utilizando las Extensiones de la Comunidad de PowerShell ya tiene esto.

Con respecto a la capacidad de usar Select-Object-Exppand en V2, es un truco bonito pero no obvio y realmente no es para lo que Select-Object ni -Expand estaba destinado. -Expansión tiene que ver con el aplanamiento, como SelectMany de LINQ y Select-Object se trata de la proyección de múltiples propiedades en un objeto personalizado.

.psiscontainer} | Get-PropertyName fullname

Entonces puedes hacer esto:

<*>

Por cierto, si está utilizando las Extensiones de la Comunidad de PowerShell ya tiene esto.

Con respecto a la capacidad de usar Select-Object-Exppand en V2, es un truco bonito pero no obvio y realmente no es para lo que Select-Object ni -Expand estaba destinado. -Expansión tiene que ver con el aplanamiento, como SelectMany de LINQ y Select-Object se trata de la proyección de múltiples propiedades en un objeto personalizado.

.$name }

Entonces puedes hacer esto:

<*>

Por cierto, si está utilizando las Extensiones de la Comunidad de PowerShell ya tiene esto.

Con respecto a la capacidad de usar Select-Object-Exppand en V2, es un truco bonito pero no obvio y realmente no es para lo que Select-Object ni -Expand estaba destinado. -Expansión tiene que ver con el aplanamiento, como SelectMany de LINQ y Select-Object se trata de la proyección de múltiples propiedades en un objeto personalizado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top