Sistemas Operacionais II PowerShell
Sobre PowerShell Nova geração de Shell (família Microsoft Windows); Permite a execução remota (Versão 2.0); Integra com .NET Framework;
Instalação Windows Installer 3.1; .NET Framework 2.0 SP 1; PowerShell 1.0 (ou 2.0).
Poderosa Calculadora Exemplo: 5  –  4 (5 + 9) * 4 5GB / 120MB
Executando Comandos Externos PowerShell pode executar comandos do clássico Prompt de comandos Microsoft, por exemplo ipconfig. ipconfig ls dir
Comandos PowerShell Os comandos internos do PowerShell são chamados de cmdlets. Os nomes dos comandos são compostos por um verbo seguido de - e uma ação. Digite no terminal: get-command
Auto Explicativo Os comandos PowerShell foram desenvolvidos para exibir explicações sobre os comandos e o comportamento de execução dos mesmos. Use o comando:  get-help
Uso de Parâmetros Parâmetros adicionam informações aos comandos, tais informações são utilizadas internamente para execução de sua rotina. Exemplo: Get-ChildItem  -path c:\
Tipos de Parâmetros Existem parâmetros que necessitam de valores e parâmetros que são apenas usados internamente para execução do algoritmo. Get-ChildItem c:\windows -recurse -name
Criando Funções A criação de função é simples e intuitiva, veja exemplo abaixo: Para criar: function quickping {  ping -n 1 -w 100 $args }
Criando Funções Para chamar: quickping 127.0.0.1
Criando um Script Crie um arquivo de texto simples (com notepad) na raiz de C:\temp com o nome teste.ps1 e edite o script abaixo: “ Isso é um script... Show de bola”
Para executar Primeiro temos que dar permissão: Set-ExecutionPolicy RemoteSigned Agora executar: C:\temp\teste.ps1
Alias para scripts Podemos criar um “apelido” para um script. Set-Alias meuScript c:\temp\teste.ps1 Para chamar basta escrever no termial: meuScript
Variáveis Permite armazenar valores desconhecidos (para a fase de codificação); O tipo é definido durante a execução (baseado no valor armazenado); Utiliza-se $ para acessar a variável.
Exemplo: $amount = 120 $VAT = 0.19 # Calculate: $result = $amount * $VAT # Output result $result
Atribuindo Retorno de Funções Podemos resgatar o retorno de funções me variáveis, exemplo: $lista = Get-ChildItem c:\
Listando Variáveis Podemos listar as variáveis que estão carregadas na memória, exemplo: Dir variable:list*
Testando se uma variável existe Podemos durante a execução validar se uma variável existe para execução de rotinas. Test-Path variable:\lista
Excluindo uma Variável Podemos excluir variáveis da lista de variáveis e liberar memória. del variable:\lista
Comandos cmdlets Clear-Variable; Get-Variable; New-Variable; Remove-Variable; Set-Variable.
New-Variable New-Variable test -value 100 -description "test variable with write-protection" -option ReadOnly
Variáveis do Ambiente Existem variáveis criadas pelo ambiente que armazenam informações úteis para desenvolver scripts de qualidade. Digite: Dir env:
Variáveis de Ambiente $env:windir $env:OS  = "Apple MacIntosh OS X ” $env:Teste  =  “ Reprovar Alunos, teste 1, 2, 3" del env:\windir
Escopo de Variáveis Variáveis podem ter escopo; Escopo define a visibilidade de uma variável; Podemos ter: global; local; private; script.
Como usar $private:b = 5; $local:c = 9; $global:d = 3; $script:k = 1;
Tipos de Variáveis Para saber o tipo definido para a variável: $variavel . GetType() . Name
Definindo um Tipo [Byte]$flag = 12 $flag.GetType().Name
DateTime [ datetime ] $date = "November 12, 2004" $date
Passando Argumentos para um Script Podemos passar argumentos para um script para execução interna, desta forma podemos chamar scripts dentro de scripts de modo sequencial utilizando os valores gerados.
Argumentos Altere script c:\temp\teste.ps1 conforme listagem abaixo: “ O nome: $args xxxx”
Argumentos Para executar o script: meuScript  Wellington Pinto de Oliveira
Acesso a um parametro A variável args é uma coleção, para acessar um elemento: “ Oxxxx:  $($args[0])  uuuu xxxxx ”
Argumentos Para executar o script: meuScript  Wellington Pinto de Oliveira
Condições Condições são definidas baseando-se em comparações lógicas.
 
Exemplos 4 -eq  10 “ wellington ”  -eq  “ WELLINGTON ” 12 -eq "Hello" 12 -eq "000012" "12" -eq 12 "12" -eq 012 "012" -eq 012
Exemplos 123 -lt 123.4 123 -lt "123.4" 123 -lt "123.5"
Condições $a = 10 $a -gt 5 -not ($a -gt 5) # Shorthand: instead of -not "!" can also be used: !($a -gt 5)
Combinando Condições Podemos combinar condições para criar condições complexas. (  ($age -ge  18)  -and  ($sex -eq "m" )  ) Usamos operadores especiais, são chamados lógicos.
 
Comparação com Collections Podemos usar operações de comparação com arrays e collections.  1,2,3,4,3,2,1 -eq  3 Retorna: 3 3
Comparação com Collections 1,2,3,4,3,2,1 -ne  3 Retorna: 1 , 2, 3, 2, 1
Validando a Existência de um Elemento Podemos usar para isso o operador -contains  1,2,3 -contains  5 Retorna: False
If-Else Podemos usar a estrutura if-else para executar blocos de scritps baseado no resultado de uma condição condição.
If-Else
Exemplo
Exemplo
Exemplo
switch O Switch permite a comparação de um valor com n possibilidades e inclusive pode-se utilizar operadores relacionais ou lógicos.
Exemplo
Exemplo
Comparação entre Strings
Case Sensitivity
Caractere Curinga
Regex
Loop Um Loop é um laço de repetição que pode ser utilizado para repetir n vezes um bloco de código.
ForEach-Object
Chamando Métodos Get-Process notepad | ForEach-Object  {  $_.Kill()  }
Exemplo
Foreach
Exemplo
D o...While
While
Saindo de um While
For
Loop com switch
Referência WELTNER, Tobias. Mastering Powershell. Disponível em:  http:// http://powershell.com/Mastering-PowerShell.pdf

PowerShell