Olá pessoal, tudo certo?
No primeiro post dessa série, mostrei os elementos fundamentais para utilização do Powershell. No post de hoje, pretendo mostrar elementos que agradam todo programador: Operadores e funções.
Sem delongas…
Operadores de comparação
Powershell oferece um conjunto rico de operadores de comparação. Pela natureza “linha de comando”, não encontramos os opradores em sua sintaxe usual, mas não há nada de realmente desafiador aqui.
Os operadores de comparação ficaram assim:
- -eq: igual a;
- -ne: diferente de;
- -ge: maior ou igual a;
- -gt: maior que;
- -le: menor ou igual a;
- -lt: menor que;
- -like
- -notlike
- -match – Combina com expressão regular;
- -notmatch – Não combina com expressão regular;
- -contains
- -notcontains
- -is
- -isnot
Comecemos por um exemplo:
Nas linhas 1 e 2, evidencio que todo cmdlet que retorne uma “lista” de objetos é somente isso: uma lista. Quantos arquivos tenho em meu diretório atual? Pergunto na linha 1, respondo na linha 2. Quantos processos abertos? Linha 9 pergunta, linha 10 responde. Um gigabyte = 1024 mb? Conforme as linhas 11 e 12, sim!
Nas linhas entre 3 e 8, realizo algumas comparações simples. Outro exemplo:
Logo na linha 1, uma operação bacana. Pego o resultado da operação de um aplicativo externo, o cURL (tema suficiente para um post inteiro), que é um “navegador web texto”, e atributo a variável $result.
Na linha 5, utilizo o suporte nativo do Powershell para xml. Na linha 6, verifico se a quantidade de nodos Item, em rss.channel, é maior que 10.
Agora, um pouco de expressões regulares:
Aqui, temos algumas “comparações” realizadas com expressões regulares. Agora, considere o exemplo abaixo:
Pelas linha 1 e 2, percebemos que todos os operadores de comparação padrão do Powershell são case-insensitive. Para comparações case-sensitive, basta adicionar um c antes do nome do operador (linhas 3 e 4).
Agora, uma idéia dos operadores de lista:
Compreendido? 1..10 gera uma lista com números de 1 até 10. O –contains verifica se um elemento está na lista.
Aliás, aproveitando a brincadeira, observe:
Operadores de comparação
Os operadores lógicos são:
- -and
- -or
- -xor: ou exclusivo (True –xor False = True; False –xor True = True, falso para todos os outros casos.
- -not
Observe:
Auto-explicativo, não é?!
Where-Object: o rei dos filtros
Agora que já sabemos fazer comparações, vejamos como construir filtros para nossas listas baseados em condições. Observe:
Importante: O conteúdo das linhas 21 e 22 deve estar na mesma linha. Utilizei duas para respeitar o layout do blog.
O cmdlet WhereObject espera uma “expressão” lógica (que retorne verdadeiro ou falso). O elemento da lista que está sendo avaliado é representado pela variável reservada $_.
Refactoring no Powershell – Extract method (!?)
Powershell permite que definamos funções. Criando algumas funções utilitárias, podemos simplificar nossos scripts. Observe:
Bonito!
Acho que já avançamos o suficiente. Por hoje é isso!
Vinicius Canto
fevereiro 2, 2011
Propaganda gratuita, mas pertinente nesse caso. PowerShell é sensacional, e dá pra fazer milagre com ele, seja você dev, itpro ou somente um power-user
Tenho uns 40 artigos sobre dicas e truques nele no meu blog, alguns ainda da época que ele se chamava Monad. -> Blog do Vinicius.
[]s,
Vinicius
elemarjr
fevereiro 2, 2011
Bacana, Vinicius. Estou tentando ver se consigo demonstrar a potencialidade da ferramenta.
Quanto a propaganda, é mesmo gratuita..