Você está na página 1de 68

Sistemas Operacionais II

PowerShell

Sobre PowerShell
Nova gerao de Shell (famlia Microsoft Windows); Permite a execuo remota (Verso 2.0); Integra com .NET Framework;

Instalao
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 clssico Prompt de comandos Microsoft, por exemplo ipconfig.
ipconfig
ls dir

Comandos PowerShell
Os comandos internos do PowerShell so chamados de cmdlets. Os nomes dos comandos so compostos por um verbo seguido de - e uma ao. Digite no terminal: get-command

Auto Explicativo
Os comandos PowerShell foram desenvolvidos para exibir explicaes sobre os comandos e o comportamento de execuo dos mesmos.

Use o comando: get-help

Uso de Parmetros
Parmetros adicionam informaes aos comandos, tais informaes so utilizadas internamente para execuo de sua rotina.

Exemplo: Get-ChildItem -path c:\

Tipos de Parmetros
Existem parmetros que necessitam de valores e parmetros que so apenas usados internamente para execuo do algoritmo.
Get-ChildItem c:\windows -recurse -name

Criando Funes
A criao de funo simples e intuitiva, veja exemplo abaixo: Para criar:

function quickping {
ping -n 1 -w 100 $args

Criando Funes
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 permisso: 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

Variveis
Permite armazenar valores desconhecidos (para a fase de codificao); O tipo definido durante a execuo (baseado no valor armazenado);

Utiliza-se $ para acessar a varivel.

Exemplo:
$amount = 120

$VAT = 0.19
# Calculate: $result = $amount * $VAT # Output result $result

Atribuindo Retorno de Funes


Podemos resgatar o retorno de funes me variveis, exemplo: $lista = Get-ChildItem c:\

Listando Variveis
Podemos listar as variveis que esto carregadas na memria, exemplo: Dir variable:list*

Testando se uma varivel existe


Podemos durante a execuo validar se uma varivel existe para execuo de rotinas.

Test-Path variable:\lista

Excluindo uma Varivel


Podemos excluir variveis da lista de variveis e liberar memria.

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

Variveis do Ambiente
Existem variveis criadas pelo ambiente que armazenam informaes teis para desenvolver scripts de qualidade.

Digite: Dir env:

Variveis de Ambiente

$env:windir
$env:OS = "Apple MacIntosh OS X $env:Teste = Reprovar Alunos, teste 1, 2, 3" del env:\windir

Escopo de Variveis
Variveis podem ter escopo;

Escopo define a visibilidade de uma varivel;


Podemos ter:
global; local; private; script.

Como usar

$private:b = 5;
$local:c = 9; $global:d = 3; $script:k = 1;

Tipos de Variveis
Para saber o tipo definido para a varivel: $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 execuo 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 varivel args uma coleo, para acessar um elemento: Oxxxx: $($args[0]) uuuu xxxxx

Argumentos
Para executar o script:
meuScript Wellington Pinto de Oliveira

Condies
Condies so definidas baseando-se em comparaes lgicas.

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"

Condies
$a = 10

$a -gt 5
-not ($a -gt 5) # Shorthand: instead of -not "!" can also be used:

!($a -gt 5)

Combinando Condies
Podemos combinar condies para criar condies complexas. ( ($age -ge 18) -and ($sex -eq "m" ) ) Usamos operadores especiais, so chamados lgicos.

Comparao com Collections


Podemos usar operaes de comparao com arrays e collections. 1,2,3,4,3,2,1 -eq 3

Retorna:
3

Comparao com Collections


1,2,3,4,3,2,1 -ne 3 Retorna: 1, 2, 3, 2, 1

Validando a Existncia 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 condio condio.

If-Else

Exemplo

Exemplo

Exemplo

switch
O Switch permite a comparao de um valor com n possibilidades e inclusive pode-se utilizar operadores relacionais ou lgicos.

Exemplo

Exemplo

Comparao entre Strings

Case Sensitivity

Caractere Curinga

Regex

Loop
Um Loop um lao de repetio que pode ser utilizado para repetir n vezes um bloco de cdigo.

ForEach-Object

Chamando Mtodos
Get-Process notepad | ForEach-Object

{
$_.Kill() }

Exemplo

Foreach

Exemplo

Do...While

While

Saindo de um While

For

Loop com switch

Referncia
WELTNER, Tobias. Mastering Powershell. Disponvel em: http://http://powershell.com/MasteringPowerShell.pdf

Você também pode gostar