[cmdexe #5] Visualizar os Serviços e Filtrar resultados com Where-Object

Continuando o nosso passeio pelo mundo das linhas de comandos, neste post irei escrever sobre mais uma funcionalidade da PowerShell, neste caso visualizar os serviços do Windows que estão no computador e filtrar os mesmos.

Assim, para visualizar esta listagem, devemos executar na PowerShell o comando seguinte:

get-service

Como resultado, obtemos então uma listagem de todos os serviços instalados no computador e o seu estado que pode ser Running caso este esteja a correr no momento da execução do comando ou Stopped caso esteja parado:

É possível filtrar os serviços por estado, para isso vamos recorrer a um pequeno comando que nos permite filtrar os resultados das listagens, que é o where-object. Para aplicarmos este comando (mais conhecido como cmdlet), utilizamos uma técnica das interfaces de linha de comandos intitulada de “Pipelining”, que nos permite introduzir um comando como argumento de entrada de outro, este nome deve-se ao carater pipe que se encontra à esquerda do 1 nos teclados ( | ) e que permite fazer esta técnica, um exemplo desta técnica é o seguinte:

comando1 | cmdlet_argumento

Para conhecer melhor esta técnica, veja o artigo referente à mesma na wikipedia:

http://en.wikipedia.org/wiki/Pipeline_(Unix)

Agora, a título de exemplo, e para que entendam a sintaxe do where-object, vamos filtrar a listagem de serviços, mostrando para isso apenas os que estejam a correr, executando o comando seguinte:

 get-service | where-object {$_.status -eq “running”}

Passo a Passo, primeiro foi introduzido o comando get-service, de seguida através de pipelining ( | ), foi introduzido o where-object, abrimos então uma chaveta, e escrevemos três palavras cujo propósito é o seguinte:

$_.status

Indica o nome da coluna acerca da qual queremos aplicar o filtro, neste caso como queremos apenas os processos que estejam a correr, e sendo que esta informação está na coluna “Status”, introduzimos então este comando, se fosse na “Name”, seria $_.name .

-eq

Funciona como se fosse o operador, neste caso eq corresponde a equal, que é neste caso igual, ou seja a informação da coluna status tem de ser igual a.

Existem outros operadores que podem ser usados:

  • -lt (Less Than) – Menor que;
  • -le (Less Than or Equal to) – Menor ou igual a;
  • -gt (Greater than) – Maior que;
  • -ge (Greather than or equal to) – Maior que ou igual a;
  • -ne (Not Equal To) Não igual a, diferente de;
  • -like (Like) filtragem através de wildcards.

Finalmente, temos então o parâmetro que queremos verificar se é igual, neste caso “running”, o resultado da execução desta filtragem, é uma nova lista apenas com os serviços em execução:

Os serviços foram então filtrados.

Como podemos então ver, o cmdlet “Where-Object”, possui funcionalidades bastante úteis, ao nível da filtragem dos resultados, sendo muito útil não só nos serviços, mas também numa simples listagem de ficheiros.

Para saber mais:

http://technet.microsoft.com/en-us/library/ee177028.aspx

 

Deixe um comentário