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-Item
para 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-ChildItem
despué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
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 |
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 -ExpandProperty
Select-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 |
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 |
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 |
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: | Sí |
Aceptar caracteres comodín: | False |
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 |
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: | Sí |
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 |
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
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 |
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 |
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