powershell
DESCRIPTION
Aula de PowerShellTRANSCRIPT
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
Do...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