PowerShell Select-Object Feito Simples: Um Guia para Iniciantes

O PowerShell é uma ferramenta poderosa para gerenciar dados, mas geralmente fornece informações em excesso de uma vez. Como você sabe, ter muitas informações pode ser avassalador e difícil de analisar. Mas não se preocupe. O cmdlet PowerShell Select-Object será útil.

Neste tutorial, você aprenderá o básico do cmdlet Select-Object para filtrar ou reduzir os resultados de várias maneiras.

Continue lendo e comece a gerenciar dados sem dor!

Pré-requisitos

Este tutorial inclui demonstrações práticas. Para acompanhar, certifique-se de ter um sistema com PowerShell instalado. Este tutorial usa o Windows 10 com PowerShell 7, mas qualquer versão moderna também deve funcionar.

O que é o cmdlet Select-Object do PowerShell?

O cmdlet Select-Object simplifica o gerenciamento de dados, permitindo que você selecione propriedades específicas de um objeto ou conjunto de dados. Ao mesmo tempo, você pode renomear propriedades ou criar propriedades calculadas com base em propriedades existentes.

A sintaxe básica do Select-Object é a seguinte, onde:

Parameter Function
-InputObject Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet.
Property Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas.
Optional Parameters Allows you to refine your selection, such as selecting a certain number of objects or skipping objects.
Select-Object [-InputObject] [Property] [Optional Parameters]

Selecionando Objetos por Propriedades

Como é necessário mais do que uma breve introdução para satisfazer o seu desejo de aprender sobre o cmdlet Select-Object, por que não começar com um dos seus casos de uso comuns? Inicie este tutorial selecionando uma propriedade específica de um objeto com o cmdlet Select-Object.

Suponha que você tenha uma lista de processos em execução no seu computador, mas só deseje ver os nomes de cada processo. Especificar a propriedade Name para o cmdlet Select-Object resolverá o problema.

Abra o PowerShell e execute o comando abaixo Get-Process para recuperar e imprimir uma lista de todos os processos apenas (Select-Object) pelo Name.

Get-Process | Select-Object Name
Selecting objects by property

Além de processos em execução, o cmdlet Select-Object permite trabalhar em um arquivo CSV. Suponha que você tenha um arquivo CSV com muitas colunas, mas só precise de algumas delas. Nesse caso, deixe o cmdlet Select-Object escolher apenas as colunas relevantes para que você possa manipular e analisar os dados.

Agora, execute o seguinte comando para selecionar várias propriedades (Select-Object): Name e CPU (separados por vírgulas). Essa funcionalidade é útil ao lidar com grandes conjuntos de dados nos quais você precisa apenas de algumas propriedades de cada objeto.

Além disso, este comando também ordena a lista de objetos (Sort-Object) em ordem -Descending com a propriedade CPU como referência.

Get-Process | Select-Object Name, CPU | Sort-Object -Descending CPU

Abaixo, você pode ver os processos listados, começando pelo mais consumidor de recursos, o Google Chrome (se você tiver instalado).

Selecting multiple properties

Criando uma Propriedade Calculada

Ao procurar propriedades que atendam melhor às suas necessidades, considere criar uma propriedade calculada. Por quê? Propriedades calculadas permitem manipular e transformar dados, combinar propriedades existentes, realizar operações matemáticas ou formatar dados de uma maneira específica.

Para criar uma propriedade calculada, você deve especificar um novo nome de propriedade e uma expressão que define como calcular o valor da propriedade:

Execute o comando abaixo para realizar o seguinte:

  • Obter uma lista de processos em execução (Get-Process), selecionando apenas (Select-Object) as propriedades Name e CPU.
  • Crie uma nova propriedade calculada com o Nome Memória (MB), que calcula o uso de memória de cada processo em megabytes. O uso de memória é calculado usando uma Expressão que divide a propriedade WorkingSet por 1MB. Qualquer expressão válida do PowerShell funciona na criação de uma propriedade calculada.
  • Imprime todos os processos em execução recuperados em ordem -Descending pela propriedade calculada Memória (MB).
Get-Process | Select-Object Name, CPU, @{Name="Memory (MB)";Expression={$_.WorkingSet/1MB}} | Sort-Object -Descending "Memory (MB)"
Creating a calculated property

Excluindo uma Propriedade Específica

Na vida real, os resultados de um comando Select-Object podem conter informações sensíveis, como nomes de usuário e senhas. Como evitar esse risco?

Para evitar que dados sensíveis sejam exibidos na saída, anexe o parâmetro -ExcludeProperty para excluir uma propriedade especificada da saída.

Execute o seguinte comando para realizar as seguintes tarefas:

  • Recuperar uma lista de todos os arquivos e pastas (Get-ChildItem) no diretório C:\\ recursivamente (-Recurse).
  • Encaminhe a saída para o cmdlet Select-Object para selecionar as propriedades Name, Length e LastWriteTime.
  • Exclua (-ExcludeProperty) a propriedade FullName da saída. Fazendo isso, evita que os caminhos completos sejam exibidos na saída, o que pode conter informações confidenciais.
Get-ChildItem -Path C:\ -Recurse | Select-Object Name, Length, LastWriteTime -ExcludeProperty FullName
Excluding a specified property

Pulando o Primeiro ou Último Número de Objetos

Ao trabalhar com conjuntos de dados massivos, encontrar os dados que você precisa pode ser como procurar um diamante em uma mina de carvão. Mas por que perder tempo peneirando dados irrelevantes?

No PowerShell, o cmdlet Select-Object fornece dois parâmetros que permitem excluir o primeiro (-Skip) e o último (-SkipLast) número de objetos na saída, respectivamente.

Para ver como pular vários objetos de uma saída funciona:

Execute o comando abaixo para obter todos os processos em execução (Get-Process), mas -Skip os primeiros 100 objetos retornados.

Observe que o número de objetos pulados é baseado em valores inteiros (números positivos e inteiros sem pontos decimais), que neste caso é 100.

Get-Process | Select-Object -Skip 100
Skipping the first 100 objects

Agora, execute o seguinte comando para obter uma lista dos conteúdos do diretório de trabalho (Get-ChildItem), mas pule os últimos (-SkipLast) 100 objetos retornados.

Get-ChildItem | Select-Object -SkipLast 100
Skipping the last 100 objects

Selecionando o Primeiro ou Último Número de Objetos

Além de pular o primeiro e o último número de objetos, você também pode estar interessado em selecionar o primeiro e o último número de objetos. O cmdlet Select-Object suporta essa funcionalidade com os parâmetros First e Last, que permitem pular tudo o mais para economizar tempo e recursos.

Execute o seguinte comando para obter todos os processos, mas selecione (Select-Object) apenas os -Primeiros 10 objetos retornados.

Get-Process | Select-Object -First 10
Selecting the first 10 objects returned

Agora, execute o comando abaixo para obter todo o conteúdo do diretório de trabalho (Get-ChildItem), mas selecione (Select-Object) apenas os -Últimos 10 objetos retornados.

Get-ChildItem | Select-Object -Last 10
Selecting the last 10 objects returned

Selecionando Objetos Únicos Exclusivamente

Conforme você trabalha com conjuntos de dados maiores, você encontrará valores duplicados que pode querer excluir da saída, o que é típico. Mas a boa coisa com o cmdlet Select-Object é que você não precisa excluir valores duplicados manualmente.

Anexar o parâmetro -Único permite selecionar apenas os objetos exclusivos da saída, simplificando sua análise e melhorando a precisão dos resultados.

Execute o comando abaixo para selecionar (Select-Object) e retornar os -Primeiros 2 objetos.

"1","1","2","3" | Select-Object -First 2

Abaixo, você pode ver dois objetos retornados independentemente se o outro for um valor duplicado.

Selecting and returning objects with duplicate values

Por fim, execute o seguinte comando para retornar apenas um valor -Único para cada um dos -Primeiros 2 objetos selecionados.

"1","1","2","3" | Select-Object -First 2 -Unique

Desta vez, você pode ver apenas um retornado dos dois primeiros objetos selecionados, já que o outro é apenas um valor duplicado. Como você percebe, esta saída prova que o parâmetro -Unique é útil para descartar rapidamente quaisquer objetos duplicados em seus dados.

Selecting unique objects exclusively

Conclusão

O PowerShell tende a produzir uma sobrecarga de informações. Mas neste tutorial, você aprendeu como o cmdlet Select-Object do PowerShell ajuda a simplificar seus dados para ver apenas as informações necessárias.

Você viu como diferentes parâmetros permitem selecionar e excluir dados, especialmente valores duplicados de uma saída. Com o cmdlet Select-Object, gerenciar grandes quantidades de dados não precisa ser uma tarefa assustadora.

Neste ponto, você pode rapidamente refinar seus resultados para serem mais adequados para análise e solução de problemas. Mas por que não aprender como formatar suas propriedades calculadas para melhorar a legibilidade e usabilidade?

Source:
https://adamtheautomator.com/powershell-select-object/