[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

 

[cmdexe #4] Terminar Processos na PowerShell

Através da Poweshell, é possível gerir os processos do computador, assim na próxima vez que pretender terminar um processo, em vez de ir até ao clássico “Task Manager”, experimente fazer o mesmo nesta nova linha de comandos do Windows.

Para visualizar a lista de processos a correr no Windows, deverá digitar na PowerShell, o seguinte comando:

get-process

Irá então visualizar a lista:

Como podemos concluir, esta lista é enorme, por isso se o que queremos é um processo específico, podemos filtrar pelo mesmo, adicionando um espaço e parte ou o todo do nome do processo ao comando get-process, por exemplo, caso queiramos terminar o processo Steam, podemos fazer o seguinte:

get-process steam

Desta forma apenas irá aparecer este processo

Para terminar o processo, basta escrever o comando

stop process -id <id do processo>

Neste caso, para terminar o processo Steam, basta que se execute:

stop process -id 7880

Após premir a tecla enter, o processo é então terminado.