Módulo Select-Object

: Microsoft.PowerShell.Utilidad

Selecciona objetos o propiedades de un objeto.

la Sintaxis de

Select-Object >] 
Select-Object >] 

Descripción

El Select-Object cmdlet selecciona especifica las propiedades de un objeto o conjunto de objetos. También puede seleccionar objetos únicos, un número especificado de objetos u objetos en una posición especificada en un grupo.

Para seleccionar objetos de una colección, utilice los parámetros Primero, Último, Único, Saltar e Indicar. Para seleccionar propiedades de objeto, utilice el parámetro Propiedad. Al seleccionar propiedades, Select-Object devuelve objetos nuevos que solo tienen las propiedades especificadas.

A partir de Windows PowerShell 3.0, Select-Object incluye una función de optimización que evita que los comandos creen y procesen objetos que no se utilizan.

Cuando se incluye un comando Select-Object con los parámetros First or Index en una línea de comandos, PowerShell detiene el comando que genera los objetos en cuanto se genera el número seleccionado de objetos, incluso cuando el comando que genera los objetos aparece antes del comandoSelect-Object en la canalización. Para desactivar este comportamiento de optimización, utilice el Waitparameter.

Ejemplos

Ejemplo 1: Seleccionar objetos por propiedad

Este ejemplo crea objetos que tienen las propiedades Name, ID y working set (WS) de objetos de proceso.

Get-Process | Select-Object -Property ProcessName, Id, WS

Ejemplo 2: Seleccione objetos por propiedad y formatee los resultados

Este ejemplo obtiene información sobre los módulos utilizados por los procesos en el equipo. Utiliza el cmdletGet-Process para obtener el proceso en el equipo.

Utiliza el cmdlet Select-Object para generar una matriz de instancias contenidas en la propiedad Modules de cada instancia System.Diagnostics.Process instanceoutput de Get-Process.

El parámetro Property del cmdlet Select-Object selecciona los nombres de proceso. Esto agrega una NotePropertyProcessName a cada instancia y populatesit con el valor de la propiedad ProcessName del proceso actual.

Por último, el cmdlet Format-List se utiliza para mostrar el nombre y los módulos de cada proceso en una lista.

Ejemplo 3: Seleccione los procesos que utilizan la mayor cantidad de memoria

Este ejemplo obtiene los cinco procesos que utilizan la mayor cantidad de memoria. El cmdlet Get-Process obtiene los procesos en el equipo. El cmdlet Sort-Object ordena los procesos según el uso de memoria(conjunto de trabajo), y el cmdlet Select-Object selecciona solo los últimos cinco miembros de la matriz de objetos de consulta.

El parámetro Wait no es necesario en los comandos que incluyen el cmdlet Sort-Object porqueSort-Object procesa todos los objetos y, a continuación, devuelve una colección. La optimización Select-Object solo está disponible para comandos que devuelven objetos individualmente a medida que se procesan.

Ejemplo 4: Seleccionar caracteres únicos de una matriz

Este ejemplo utiliza el parámetro único de Select-Object para obtener caracteres únicos de una matriz de caracteres.

"a","b","c","a","a","a" | Select-Object -Uniqueabc

Ejemplo 5: Seleccione los eventos más recientes y más antiguos en el registro de eventos

Este ejemplo obtiene los eventos primero (más recientes) y último (más antiguos) en el registro de eventos de Windows PowerShell.

Get-EventLog obtiene todos los eventos en el registro de Windows PowerShell y los guarda en la variable $a.A continuación, $a se canaliza al cmdlet Select-Object. El comando Select-Object utiliza el parámetro Index para seleccionar eventos de la matriz de eventos de la variable $a. El índice del primer evento es 0. El índice del último evento es el número de elementos en $a menos 1.

$a = Get-EventLog -LogName "Windows PowerShell"$a | Select-Object -Index 0, ($A.count - 1)

Ejemplo 6: Seleccione todo menos el primer objeto

Este ejemplo crea una nueva PSSession en cada uno de los equipos enumerados en los Servidores.archivos txt, excepto el primero.

Select-Object selecciona todos los equipos excepto el primer equipo en una lista de nombres de equipos. La lista de equipos resultante se establece como el valor del parámetro ComputerName del cmdlet New-PSSession.

New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)

Ejemplo 7: Cambie el nombre de los archivos y seleccione varios para revisar

Este ejemplo agrega un sufijo «- ro » a los nombres base de los archivos de texto que tienen el atributo de solo lectura y luego muestra los primeros cinco archivos para que el usuario pueda ver una muestra del efecto.

Get-ChildItem utiliza el parámetro dinámico de solo lectura para obtener archivos de solo lectura. Los archivos resultantes se canalizan al cmdlet Rename-Item, que cambia el nombre del archivo. Utiliza el parámetro Passthru deRename-Itempara enviar los archivos renombrados al cmdlet Select-Object, que selecciona los primeros 5 fordisplay.

El parámetro Wait de Select-Object impide que PowerShell detenga el cmdlet Get-ChildItemdespués de obtener los primeros cinco archivos de texto de solo lectura. Sin este parámetro, solo se renombrarían los primeros cinco archivos de solo lectura.

Get-ChildItem *.txt -ReadOnly | Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru | Select-Object -First 5 -Wait

Ejemplo 8: Demostrar las complejidades del parámetro-ExpandProperty

Este ejemplo muestra las complejidades del parámetro ExpandProperty.

Tenga en cuenta que la salida generada fue una matriz de instancias . Las instancias se ajustan a las reglas de formato estándar de la vista de salida. Esto es cierto para cualquier propiedad expandida. Si los objetos eliminados tienen un formato estándar específico, es posible que la propiedad expandida no esté visible.

# Create a custom object to use for the Select-Object example.$object = @{Name="CustomObject";Expand=@(1,2,3,4,5)}# Use the ExpandProperty parameter to Expand the property.$object | Select-Object -ExpandProperty Expand -Property Name12345# The output did not contain the Name property, but it was added successfully.# Use Get-Member to confirm the Name property was added and populated.$object | Select-Object -ExpandProperty Expand -Property Name | Get-MemberTypeName: System.Int32Name MemberType Definition---- ---------- ----------CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int IComparable.CompareTo(System.Object obj)...Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable.Equals(int other)GetHashCode Method int GetHashCode()GetType Method type GetType()GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)ToString Method string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider)...ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)Name NoteProperty string Name=CustomObject

Ejemplo 9: Crear propiedades personalizadas en objetos

El siguiente ejemplo muestra el uso de Select-Object para agregar una propiedad personalizada a cualquier objeto.Cuando se especifica un nombre de propiedad que no existe, Select-Object crea esa propiedad como aNoteProperty en cada objeto pasado.

Ejemplo 10: Crear propiedades calculadas para cada objeto de entrada

Este ejemplo muestra el uso de Select-Object para agregar propiedades calculadas a la entrada. Pasar un bloque de scripts al parámetro de propiedad hace que Select-Object evalúe la expresión objeto oneach pasado y agregue los resultados a la salida. Dentro del bloque de scripts, puede usar la variable$_ para hacer referencia al objeto actual de la canalización.

De forma predeterminada, Select-Object utilizará la cadena ScriptBlock como nombre de la propiedad. Con aHashtable, puede etiquetar la salida de su bloque de scripts como una propiedad personalizada agregada a cada objeto. Puede agregar varias propiedades calculadas a cada objeto pasado a Select-Object.

Parámetros

-ExcludeProperty

Especifica las propiedades que este cmdlet se excluye de la operación. Se permiten comodines.

A partir de PowerShell 6, ya no es necesario incluir el parámetro de propiedad para que funcione Excludeproperty.

Tipo: String
Cargo: Nombre
valor Predeterminado: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín: True
– ExpandProperty

Especifica una propiedad a seleccionar e indica que se debe intentar expandir thatproperty.

  • Si la propiedad es una matriz, cada valor de la matriz se incluye en la salida.
  • Si la propiedad especificada es un objeto, las propiedades de objetos se expanden para cada objeto InputObject

En cualquier caso, el tipo de salida de objetos coincidirá con el Tipo de la propiedad expandida.

Si se especifica el parámetro de propiedad, Select-Object intentará agregar cada propiedad seleccionada como propiedad de nota a cada objeto de salida.

Advertencia

Si recibe el error: Seleccionar: La propiedad no se puede procesar porque la propiedad <PropertyName> ya existe, tenga en cuenta lo siguiente.Tenga en cuenta que al usar -ExpandPropertySelect-Object no puede reemplazar una propiedad existente.Esto significa:

  • Si el objeto expandido tiene una propiedad del mismo nombre, se producirá un error.
  • Si el objeto seleccionado tiene una propiedad con el mismo nombre que una propiedad de objetos expandidos, se producirá un error.
Tipo: String
Cargo: Nombre
valor por Defecto: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín: False

Primera

Especifica el número de objetos para seleccionar desde el principio de una matriz de objetos de entrada.

Tipo: Int32
Cargo: Nombre
valor Predeterminado: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín: False
Índice

Selecciona los objetos a partir de una matriz basada en sus valores de índice. Introduzca los índices en una lista separada por comas. Los índices en una matriz comienzan por 0, donde 0 representa el primer valor y (n-1) representa el último valor.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-InputObject

Specifies objects to send to the cmdlet through the pipeline. This parameter enables you to pipeobjects to Select-Object.

Cuando pasa objetos al parámetro InputObject, en lugar de usar la canalización,Select-Object trata el InputObject como un único objeto, incluso si el valor es una colección. Se recomienda utilizar la canalización al pasar colecciones a Select-Object.

Tipo: PSObject
Cargo: Nombre
valor Predeterminado: Ninguno
Aceptar tubería de entrada:
Aceptar caracteres comodín: False
-Last

Specifies the number of objects to select from the end of an array of input objects.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Property

Specifies the properties to select. Estas propiedades se añaden como miembros NoteProperty a los objetos output. Se permiten comodines.

El valor del parámetro Property puede ser una nueva propiedad calculada. Para crear una propiedad calculada,utilice una tabla hash.

las claves Válidas son:

  • Nombre (o Etiqueta) – <string>
  • la Expresión <string> o <script block>

Para obtener más información, seeabout_Calculated_Properties.

Tipo: Objeto
Cargo: 0
valor Predeterminado: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín:
-Saltar

Salta (no seleccionar) el número especificado de elementos. De forma predeterminada, el parámetro Skip cuenta desde el principio de la matriz o lista de objetos, pero si el comando utiliza el último parámetro,cuenta desde el final de la lista o la matriz.

A diferencia del parámetro Index, que comienza a contar en 0, el parámetro Skip comienza en 1.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SkipIndex
Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SkipLast

Salta (no seleccionar) el número especificado de elementos desde el final de la lista o matriz. Funciona de la misma manera que usar Skip junto con el último parámetro.

A diferencia del parámetro Index, que comienza a contar en 0, el parámetro SkipLast comienza en 1.

Tipo: Int32
Cargo: Nombre
valor Predeterminado: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín: False
Único

Especifica que si un subconjunto de los objetos de entrada tiene las mismas propiedades y valores, sólo un singlemember del subconjunto será seleccionado.

Este parámetro distingue entre mayúsculas y minúsculas. Como resultado, las cadenas que solo difieren en la carcasa de los caracteres se consideran únicas.

Tipo: SwitchParameter
Cargo: Nombre
valor Predeterminado: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín: False
-Espere

Indica que el cmdlet desactiva la optimización. PowerShell ejecuta comandos en el orden en que aparecen en la canalización de comandos y les permite generar todos los objetos. De forma predeterminada, si incluye un comandoSelect-Object con los parámetros Primero o Índice en una canalización de comandos, PowerShell detiene el comando que genera los objetos tan pronto como se genera el número seleccionado de objetos.

Este parámetro se introdujo en Windows PowerShell 3.0.

Tipo: SwitchParameter
Cargo: Nombre
valor Predeterminado: Ninguno
Aceptar tubería de entrada: False
Aceptar caracteres comodín: False

Entradas

PSObject

Se puede canalizar cualquier objeto a Select-Object.

Salidas de

PSObject

Notas

  • también puede referirse a la etiqueta Select-Object cmdlet por su alias, select. Para obtener más información, consulte about_Aliases.

  • La función de optimización de Select-Object solo está disponible para comandos que escriben objetos en la canalización a medida que se procesan. No tiene efecto en los comandos que almacenan en búfer objetos procesados y los escriben como una colección. Escribir objetos de forma inmediata es una práctica recomendada de diseño de cmdlets. Para obtener más información, consulte Escribir Registros Únicos en la Tubería con las Directrices de Desarrollo Recomendadas.

  • about_Calculated_Properties
  • Grupo-Objeto
  • Tipo de Objeto
  • where-Object

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *