selecciona objectos ou propriedades dos objectos.
Sintaxe
Select-Object >]
Select-Object >]
Descrição
Select-Object
cmdlet seleciona as propriedades específicas de um objeto ou conjunto de objetos. Ele também pode selecionar objetos únicos, um número especificado de objetos, ou objetos em uma posição especificada em anarray.
para selecionar objetos de uma coleção, use os parâmetros Primeiro, Último, único, Skip, andIndex. Para selecionar Propriedades do objeto, use o parâmetro propriedade. Quando selecciona as propostas, o devolve novos objectos que só têm as propriedades indicadas.
começando no Windows PowerShell 3.0, Select-Object
inclui uma funcionalidade de otimização que evita a criação e processamento de objetos que não são usados.
Quando incluir um comando Select-Object
com os primeiros parâmetros ou índices numa linha de comandos, o PowerShell pára o comando que gera os objectos assim que o número seleccionado de objectos é gerado, mesmo quando o comando que gera os objectos aparece antes do comandoSelect-Object
na conduta. Para desligar este comportamento de otimização, use o Waitparameter.
exemplos
exemplo 1: Selecione objetos por propriedade
este exemplo cria objetos que têm o nome, ID e propriedades do conjunto de trabalho (WS) dos objetos de processo.
Get-Process | Select-Object -Property ProcessName, Id, WS
Exemplo 2: Selecionar objetos de propriedade e formatar os resultados
Este exemplo obtém informações sobre os módulos utilizados pelos processos no computador. Ele usaGet-Process
cmdlet para obter o processo no computador.
usa Select-Object
cmdlet para gerar uma matriz de instâncias contidas nos Módulos de propriedade de cada
System.Diagnostics.Process
instanceoutput por Get-Process
.
O parâmetro de propriedade do Select-Object
cmdlet seleciona os nomes do processo. Isto adiciona umaProcessName
NoteProperty a cada id
instância e populait com o valor da propriedade Processoname atual.
Finally, Format-List
cmdlet is used to display the name and modules of each process in a list.
exemplo 3: Selecione processos usando a maioria da memória
este exemplo recebe os cinco processos que estão usando mais memória. The Get-Process
cmdlet gets the processes on the computer. OSort-Object
cmdlet ordena os processos de acordo com o uso da memória(conjunto de trabalho), e oSelect-Object
cmdlet seleciona apenas os últimos cinco membros da matriz de objetos.
O parâmetro de espera não é necessário nos comandos que incluem o Sort-Object
cmdlet porqueSort-Object
processa todos os objectos e depois devolve uma colecção. TheSelect-Object
optimization is available only for commands that return objects individually as they are processed.exemplo 4: Selecione caracteres únicos de um array
Este exemplo usa o parâmetro único de para obter caracteres únicos de um array de caracteres.
"a","b","c","a","a","a" | Select-Object -Uniqueabc
exemplo 5: Seleccione os eventos mais recentes e mais antigos no registo de eventos
Este exemplo obtém os primeiros (mais recentes) e os últimos (mais antigos) eventos no registo de eventos do Windows PowerShell.
Get-EventLog
recebe todos os eventos no log PowerShell do Windows e guarda-os na variável$a
variável.Então, $a
é piped to theSelect-Object
cmdlet. O comando Select-Object
usa o Índice para selecionar eventos da lista de eventos na variável $a
. O índice do primeiro evento é 0. O índice do último evento é o número de itens em $a
menos 1.
$a = Get-EventLog -LogName "Windows PowerShell"$a | Select-Object -Index 0, ($A.count - 1)
Exemplo 6: Selecione todos, mas o primeiro objeto
Este exemplo cria uma nova PSSession em cada um dos computadores listados nos Servidores.ficheiros txt,excepto o primeiro.
Select-Object
seleciona todos menos o primeiro computador em uma lista de nomes de computador. The resulting list of computers is set as the value of the ComputerName parameter of the New-PSSession
cmdlet.
New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)
exemplo 7: mudar o nome dos ficheiros e seleccionar vários para rever
Este exemplo adiciona um sufixo”- ro ” aos nomes de base dos ficheiros de texto que têm a atribuição apenas para leitura e então mostra os cinco primeiros ficheiros para que o utilizador possa ver uma amostra do efeito.
Get-ChildItem
utiliza o parâmetro dinâmico ReadOnly para obter ficheiros apenas para leitura. Os arquivos resultantes são canalizados para o Rename-Item
cmdlet, que renomeia o arquivo. Ele usa o parâmetro Passthru deRename-Item
para enviar os arquivos renomeados para o Select-Object
cmdlet, que seleciona os primeiros 5 fordisplay.
O parâmetro de Espera de Select-Object
impede o PowerShell de parar o Get-ChildItem
cmdlet depois de receber os primeiros cinco só de leitura de ficheiros de texto. Sem este parâmetro, apenas os primeiros cinco arquivos só de leitura seriam renomeados.
Get-ChildItem *.txt -ReadOnly | Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru | Select-Object -First 5 -Wait
exemplo 8: Demonstrar as complexidades do parâmetro-ExpandProperty
este exemplo demonstra as complexidades do parâmetro ExpandProperty.
Note que a saída gerada foi uma matriz de instâncias . As instâncias estão em conformidade com as regras de formatação tostandard da janela de saída. Isto é verdade para quaisquer propriedades expandidas. Se os objetos outputted têm um formato padrão específico, a propriedade expandida pode não ser visível.
# 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
exemplo 9: Crie propriedades personalizadas em objetos
o exemplo seguinte demonstra usando Select-Object
para adicionar uma propriedade personalizada a qualquer objeto.Quando você especificar um nome de propriedade que não existe, Select-Object
cria essa propriedade como aNoteProperty em cada objeto passado.
exemplo 10: Criar propriedades calculadas para cada InputObject
este exemplo demonstra usar para adicionar propriedades calculadas à sua entrada. Passinga ScriptBlock para o parâmetro propriedade faz com que Select-Object
avalie a expressão oneach object passado e adicione os resultados ao resultado. Dentro do ScriptBlock, você pode usar a variável$_
para referenciar o objeto atual no pipeline.
Por padrão, Select-Object
usará o texto ScriptBlock como o nome da propriedade. Se usar a opção aHashtable, poderá indicar o resultado do seu ScriptBlock como uma propriedade personalizada adicionada ao eachobject. Você pode adicionar várias propriedades calculadas a cada objeto passado para Select-Object
.
Parâmetros
Especifica as propriedades que este cmdlet exclui da operação. São permitidos Wildcards.
começando em PowerShell 6, não é mais necessário incluir o parâmetro de propriedade forExcludeProperty para trabalhar.
Tipo: | String |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | True |
Especifica uma propriedade para selecionar, e indica que uma tentativa deve ser feita para expandir thatproperty.
- Se a propriedade especificada for um array, cada valor do array é incluído na saída.
- Se a propriedade especificada for um objecto, as propriedades dos objectos são expandidas para cada item
em qualquer dos casos, o tipo de resultado dos objectos irá corresponder ao tipo da propriedade expandida.
If the Property parameter is specified, will attempt to add each selectedproperty as a NoteProperty to every outputted object.
Aviso
Se receber o erro: seleccione: a propriedade não pode ser processada porque a propriedade <PropertyName>
já existe, considere o seguinte.Observe que, ao usar -ExpandProperty
Select-Object
não pode substituir uma propriedade existente.Isto significa:
- Se o objeto expandido tem uma propriedade do mesmo nome, um erro irá ocorrer.
- Se o objecto seleccionado tiver uma propriedade com o mesmo nome que uma propriedade de objectos expandidos, o anerror irá ocorrer.
Tipo: | String |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | False |
Especifica o número de objectos a seleccionar, desde o início, de uma matriz de objetos de entrada.
Tipo: | Int32 |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | False |
Seleciona objetos a partir de uma matriz com base em seus valores de índice. Indique os índices numa lista separada por vírgulas. Índices em uma matriz começam com 0, onde 0 representa o primeiro valor e (n-1) representa o ú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
.
Quando você passa objetos para o parâmetro InputObject, em vez de usar o pipeline,Select-Object
trata o InputObject como um único objeto, mesmo que o valor seja uma coleção. Itis recommended that you use the pipeline when passing collections to Select-Object
.
Tipo: | PSObject |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | True |
Aceita caracteres curinga: | 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 propriedades são adicionadas como membros do NoteProperty aos objetos output. São permitidos Wildcards.
O valor do parâmetro propriedade pode ser uma nova propriedade calculada. Para criar uma propriedade calculada, use uma tabela de hash.
as chaves Válidas são:
- Nome (ou Rótulo) –
<string>
- a Expressão
<string>
ou<script block>
Para mais informações, seeabout_Calculated_Properties.
Tipo: | Objeto |
Cargo: | 0 |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | True |
Avança (não selecionado) o número especificado de itens. Por padrão, o parâmetro Skip contacta a partir do início do array ou lista de objetos,mas se o comando usa o último parâmetro, ele conta a partir do final da lista ou array.
Ao contrário do parâmetro do índice, que começa a contar em 0, o parâmetro do salto começa em 1.
Tipo: | 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 |
Avança (não selecionado) o número especificado de itens a partir do fim da lista ou matriz. Funciona da mesma forma que usar o Skip em conjunto com o último parâmetro.
Ao contrário do parâmetro índice, que começa a contar em 0, o parâmetro SkipLast começa em 1.
Tipo: | Int32 |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | False |
Especifica que se um subconjunto dos objetos de entrada tem propriedades idênticas e valores, apenas um singlemember do subconjunto será selecionado.este parâmetro é sensível à capitalização. Como resultado, strings que diferem apenas no invólucro de caracteres são consideradas únicas.
Tipo: | SwitchParameter |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | False |
Indica que o cmdlet desliga otimização. PowerShell executa comandos na ordem em que eles aparecem no pipeline de comandos e permite-lhes gerar todos os objectos. Por padrão, se você incluir um comandoSelect-Object
com os primeiros parâmetros ou índice em um pipeline de comandos, PowerShellstops o comando que gera os objetos assim que o número selecionado de objetos é gerado.
Este parâmetro foi introduzido no Windows PowerShell 3.0.
Tipo: | SwitchParameter |
Cargo: | Nome |
valor Padrão: | None |
Aceita a entrada de pipeline: | False |
Aceita caracteres curinga: | False |
Entradas
PSObject
Você pode enviar qualquer objeto Select-Object
.
Saídas
PSObject
Notas
-
Você também pode consultar o
Select-Object
cmdlet por sua built-in alias,select
. Para mais informações, consulte sobre as bases de dados. -
a funcionalidade de otimização de
Select-Object
está disponível apenas para comandos que escrevem objetos ao pipeline à medida que são processados. Ele não tem efeito em comandos que buffer processaram objetos e os reescrevem como uma coleção. Escrever objetos imediatamente é uma melhor prática de design cmdlet. Para mais informações, consulte escrever registos únicos ao Oleoduto, de forma a incentivar as orientações para o desenvolvimento.
- about_Calculated_Properties
- Group-Object
- Sort-Object
- Where-Object