012powershell-111025093022-phpapp01 (1)

68
Sistemas Operacionais II PowerShell

Upload: plensp

Post on 17-Jan-2016

218 views

Category:

Documents


1 download

DESCRIPTION

Aprendendo power shell

TRANSCRIPT

Page 1: 012powershell-111025093022-phpapp01 (1)

Sistemas Operacionais IIPowerShell

Page 2: 012powershell-111025093022-phpapp01 (1)

Sobre PowerShell

• Nova geração de Shell (família Microsoft Windows);

• Permite a execução remota (Versão 2.0);

• Integra com .NET Framework;

Page 3: 012powershell-111025093022-phpapp01 (1)

Instalação

• Windows Installer 3.1;

• .NET Framework 2.0 SP 1;

• PowerShell 1.0 (ou 2.0).

Page 4: 012powershell-111025093022-phpapp01 (1)

Poderosa Calculadora

Exemplo:

5 – 4

(5 + 9) * 4

5GB / 120MB

Page 5: 012powershell-111025093022-phpapp01 (1)

Executando Comandos Externos

• PowerShell pode executar comandos do clássico Prompt de comandos Microsoft, por exemplo ipconfig.

– ipconfig

– ls

– dir

Page 6: 012powershell-111025093022-phpapp01 (1)

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

Page 7: 012powershell-111025093022-phpapp01 (1)

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

Page 8: 012powershell-111025093022-phpapp01 (1)

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:\

Page 9: 012powershell-111025093022-phpapp01 (1)

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

Page 10: 012powershell-111025093022-phpapp01 (1)

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

}

Page 11: 012powershell-111025093022-phpapp01 (1)

Criando Funções

• Para chamar:

quickping 127.0.0.1

Page 12: 012powershell-111025093022-phpapp01 (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”

Page 13: 012powershell-111025093022-phpapp01 (1)

Para executar

Primeiro temos que dar permissão:

Set-ExecutionPolicy RemoteSigned

Agora executar:

C:\temp\teste.ps1

Page 14: 012powershell-111025093022-phpapp01 (1)

Alias para scripts

• Podemos criar um “apelido” para um script.

Set-Alias meuScript c:\temp\teste.ps1

• Para chamar basta escrever no termial:

meuScript

Page 15: 012powershell-111025093022-phpapp01 (1)

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.

Page 16: 012powershell-111025093022-phpapp01 (1)

Exemplo:

$amount = 120

$VAT = 0.19

# Calculate:

$result = $amount * $VAT

# Output result

$result

Page 17: 012powershell-111025093022-phpapp01 (1)

Atribuindo Retorno de Funções

• Podemos resgatar o retorno de funções me variáveis, exemplo:

$lista = Get-ChildItem c:\

Page 18: 012powershell-111025093022-phpapp01 (1)

Listando Variáveis

• Podemos listar as variáveis que estão carregadas na memória, exemplo:

Dir variable:list*

Page 19: 012powershell-111025093022-phpapp01 (1)

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

Page 20: 012powershell-111025093022-phpapp01 (1)

Excluindo uma Variável

• Podemos excluir variáveis da lista de variáveis e liberar memória.

del variable:\lista

Page 21: 012powershell-111025093022-phpapp01 (1)

Comandos cmdlets

• Clear-Variable;

• Get-Variable;

• New-Variable;

• Remove-Variable;

• Set-Variable.

Page 22: 012powershell-111025093022-phpapp01 (1)

New-Variable

• New-Variable test -value 100 -description "test variable with write-protection" -option ReadOnly

Page 23: 012powershell-111025093022-phpapp01 (1)

Variáveis do Ambiente

• Existem variáveis criadas pelo ambiente que armazenam informações úteis para desenvolver scripts de qualidade.

• Digite:

Dir env:

Page 24: 012powershell-111025093022-phpapp01 (1)

Variáveis de Ambiente

$env:windir

$env:OS = "Apple MacIntosh OS X”

$env:Teste = “Reprovar Alunos, teste 1, 2, 3"

del env:\windir

Page 25: 012powershell-111025093022-phpapp01 (1)

Escopo de Variáveis

• Variáveis podem ter escopo;

• Escopo define a visibilidade de uma variável;

• Podemos ter:

– global;

– local;

– private;

– script.

Page 26: 012powershell-111025093022-phpapp01 (1)

Como usar

$private:b = 5;

$local:c = 9;

$global:d = 3;

$script:k = 1;

Page 27: 012powershell-111025093022-phpapp01 (1)

Tipos de Variáveis

• Para saber o tipo definido para a variável:

$variavel.GetType().Name

Page 28: 012powershell-111025093022-phpapp01 (1)

Definindo um Tipo

[Byte]$flag = 12

$flag.GetType().Name

Page 29: 012powershell-111025093022-phpapp01 (1)

DateTime

[datetime]$date = "November 12, 2004"

$date

Page 30: 012powershell-111025093022-phpapp01 (1)

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.

Page 31: 012powershell-111025093022-phpapp01 (1)

Argumentos

• Altere script c:\temp\teste.ps1 conforme listagem abaixo:

“O nome: $args xxxx”

Page 32: 012powershell-111025093022-phpapp01 (1)

Argumentos

• Para executar o script:

meuScript Wellington Pinto de Oliveira

Page 33: 012powershell-111025093022-phpapp01 (1)

Acesso a um parametro

• A variável args é uma coleção, para acessar um elemento:

“Oxxxx: $($args[0]) uuuu xxxxx”

Page 34: 012powershell-111025093022-phpapp01 (1)

Argumentos

• Para executar o script:

meuScript Wellington Pinto de Oliveira

Page 35: 012powershell-111025093022-phpapp01 (1)

Condições

• Condições são definidas baseando-se em comparações lógicas.

Page 36: 012powershell-111025093022-phpapp01 (1)
Page 37: 012powershell-111025093022-phpapp01 (1)

Exemplos

4 -eq 10

“wellington” -eq “WELLINGTON”

12 -eq "Hello"

12 -eq "000012"

"12" -eq 12

"12" -eq 012

"012" -eq 012

Page 38: 012powershell-111025093022-phpapp01 (1)

Exemplos

123 -lt 123.4

123 -lt "123.4"

123 -lt "123.5"

Page 39: 012powershell-111025093022-phpapp01 (1)

Condições

$a = 10

$a -gt 5

-not ($a -gt 5)

# Shorthand: instead of -not "!" can also be used:

!($a -gt 5)

Page 40: 012powershell-111025093022-phpapp01 (1)

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.

Page 41: 012powershell-111025093022-phpapp01 (1)
Page 42: 012powershell-111025093022-phpapp01 (1)

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

Page 43: 012powershell-111025093022-phpapp01 (1)

Comparação com Collections

1,2,3,4,3,2,1 -ne 3

Retorna:

1, 2, 3, 2, 1

Page 44: 012powershell-111025093022-phpapp01 (1)

Validando a Existência de um Elemento

Podemos usar para isso o operador -contains

1,2,3 -contains 5

Retorna:

False

Page 45: 012powershell-111025093022-phpapp01 (1)

If-Else

• Podemos usar a estrutura if-else para executar blocos de scritps baseado no resultado de uma condição condição.

Page 46: 012powershell-111025093022-phpapp01 (1)

If-Else

Page 47: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 48: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 49: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 50: 012powershell-111025093022-phpapp01 (1)

switch

• O Switch permite a comparação de um valor com n possibilidades e inclusive pode-se utilizar operadores relacionais ou lógicos.

Page 51: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 52: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 53: 012powershell-111025093022-phpapp01 (1)

Comparação entre Strings

Page 54: 012powershell-111025093022-phpapp01 (1)

Case Sensitivity

Page 55: 012powershell-111025093022-phpapp01 (1)

Caractere Curinga

Page 56: 012powershell-111025093022-phpapp01 (1)

Regex

Page 57: 012powershell-111025093022-phpapp01 (1)

Loop

• Um Loop é um laço de repetição que pode ser utilizado para repetir n vezes um bloco de código.

Page 58: 012powershell-111025093022-phpapp01 (1)

ForEach-Object

Page 59: 012powershell-111025093022-phpapp01 (1)

Chamando Métodos

Get-Process notepad | ForEach-Object

{

$_.Kill()

}

Page 60: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 61: 012powershell-111025093022-phpapp01 (1)

Foreach

Page 62: 012powershell-111025093022-phpapp01 (1)

Exemplo

Page 63: 012powershell-111025093022-phpapp01 (1)

Do...While

Page 64: 012powershell-111025093022-phpapp01 (1)

While

Page 65: 012powershell-111025093022-phpapp01 (1)

Saindo de um While

Page 66: 012powershell-111025093022-phpapp01 (1)

For

Page 67: 012powershell-111025093022-phpapp01 (1)

Loop com switch

Page 68: 012powershell-111025093022-phpapp01 (1)

Referência

• WELTNER, Tobias. Mastering Powershell.Disponível em: http://

http://powershell.com/Mastering-PowerShell.pdf