Esta é uma parte de uma série de blogs em curso escritos por Adam Gordon. A cada semana, Adam irá guiá-lo através de um comando PowerShell, mostrando-lhe quando e como usar cada um deles. Esta semana, Adam cobre Where-Object.
Quando usar Where-Object
O cmdlet Where-Object selecciona objectos que têm valores de propriedade particulares da colecção de objectos que lhe são passados.
Iniciar no Windows PowerShell 3.0, existem duas formas diferentes de construir um comando Where-Object.
- Bloco de scripts. Você pode usar um bloco de script para especificar o nome da propriedade, um operador de comparação, e o valor da propriedade. Where-Object retorna todos os objetos para os quais o script block statement é true.
- Comparison statement. Você também pode escrever uma declaração de comparação, que é muito mais parecida com a linguagem natural.
Como usar Where-Object
Tem serviços parados:
(1st) Get-Service | Where-Object {$_.Status -eq “Stopped”}
(2nd) Get-Service | where Status -eq “Stopped”
Estes comandos obtêm uma lista de todos os serviços que estão atualmente parados.
A variável automática $_ representa cada objeto que é passado para a cmdlet Where-Object.
O (1º) comando usa o formato de bloco de script, o (2º) comando usa o formato de declaração de comparação.
Encontrar processos baseados no conjunto de trabalho:
Encontrar processos | Where-Object {$_.WorkingSet -GT 25000*1024}
Get-Process | Where-Object WorkingSet -GT (25000*1024)
Estes comandos listam processos que têm um conjunto de trabalho maior que 25.000 kilobytes (KB).
Porque o valor da propriedade WorkingSet é armazenado em bytes, o valor de 25.000 é multiplicado por 1.024,
O bloco de script e a sintaxe do comando são equivalentes e podem ser usados intercambiavelmente.
Utilizar o formato de declaração de comparação:
(1º) Get-Process | Where-Object -Property Handles -GE -Value 1000
(2º) Get-Process | where Handles -GE 1000
Este exemplo mostra como usar o novo formato de declaração de comparação do Where-Object cmdlet.
O (1º) comando usa o formato de declaração de comparação. Neste comando, nenhum apelido é usado e todos os parâmetros incluem o nome do parâmetro.
O (2º) comando é o uso mais natural do formato do comando de comparação. O alias é substituído pelo Where-Object cmdlet name e todos os nomes de parâmetros opcionais são omitidos.
Utilizar múltiplas condições:
Get-Module -ListAvailable | onde {($_.Name -notlike “Microsoft*” -and $_.Name -notlike “PS*”) -and $_.HelpInfoUri}
O comando usa o parâmetro -ListAvailable do módulo Get-Module cmdlet para obter todos os módulos no computador.
Um operador de pipeline (|) envia os módulos para o cmdlet Where-Object, que obtém módulos cujos nomes não começam com Microsoft ou PS, e tem um valor para a propriedade HelpInfoURI, que diz ao PowerShell onde encontrar arquivos de ajuda atualizados para o módulo.
As instruções de comparação são ligadas pelo operador And logical operator.
O exemplo usa o formato de comando script block.
NOTE: Os operadores lógicos, como And e Or, são válidos apenas em blocos de scripts. Você não pode usá-los no formato de declaração de comparação de um comando Where-Object.
Aprenda o comando da semana passada: Get-WinEvent.
Treinamento do PowerShell de alimentação? Veja os cursos de treinamento online PowerShell da ITProTV.