Powerpointdelgnerodramtico 110919215918-phpapp01-131202142359-phpapp01 (1)
012powershell-111025093022-phpapp01 (1)
description
Transcript of 012powershell-111025093022-phpapp01 (1)
![Page 1: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/1.jpg)
Sistemas Operacionais IIPowerShell
![Page 2: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/2.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/3.jpg)
Instalação
• Windows Installer 3.1;
• .NET Framework 2.0 SP 1;
• PowerShell 1.0 (ou 2.0).
![Page 4: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/4.jpg)
Poderosa Calculadora
Exemplo:
5 – 4
(5 + 9) * 4
5GB / 120MB
![Page 5: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/5.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/6.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/7.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/8.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/9.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/10.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/11.jpg)
Criando Funções
• Para chamar:
quickping 127.0.0.1
![Page 12: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/12.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/13.jpg)
Para executar
Primeiro temos que dar permissão:
Set-ExecutionPolicy RemoteSigned
Agora executar:
C:\temp\teste.ps1
![Page 14: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/14.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/15.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/16.jpg)
Exemplo:
$amount = 120
$VAT = 0.19
# Calculate:
$result = $amount * $VAT
# Output result
$result
![Page 17: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/17.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/18.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/19.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/20.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/21.jpg)
Comandos cmdlets
• Clear-Variable;
• Get-Variable;
• New-Variable;
• Remove-Variable;
• Set-Variable.
![Page 22: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/22.jpg)
New-Variable
• New-Variable test -value 100 -description "test variable with write-protection" -option ReadOnly
![Page 23: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/23.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/24.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/25.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/26.jpg)
Como usar
$private:b = 5;
$local:c = 9;
$global:d = 3;
$script:k = 1;
![Page 27: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/27.jpg)
Tipos de Variáveis
• Para saber o tipo definido para a variável:
$variavel.GetType().Name
![Page 28: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/28.jpg)
Definindo um Tipo
[Byte]$flag = 12
$flag.GetType().Name
![Page 29: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/29.jpg)
DateTime
[datetime]$date = "November 12, 2004"
$date
![Page 30: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/30.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/31.jpg)
Argumentos
• Altere script c:\temp\teste.ps1 conforme listagem abaixo:
“O nome: $args xxxx”
![Page 32: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/32.jpg)
Argumentos
• Para executar o script:
meuScript Wellington Pinto de Oliveira
![Page 33: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/33.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/34.jpg)
Argumentos
• Para executar o script:
meuScript Wellington Pinto de Oliveira
![Page 35: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/35.jpg)
Condições
• Condições são definidas baseando-se em comparações lógicas.
![Page 36: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/36.jpg)
![Page 37: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/37.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/38.jpg)
Exemplos
123 -lt 123.4
123 -lt "123.4"
123 -lt "123.5"
![Page 39: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/39.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/40.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/41.jpg)
![Page 42: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/42.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/43.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/44.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/45.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/46.jpg)
If-Else
![Page 47: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/47.jpg)
Exemplo
![Page 48: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/48.jpg)
Exemplo
![Page 49: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/49.jpg)
Exemplo
![Page 50: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/50.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/51.jpg)
Exemplo
![Page 52: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/52.jpg)
Exemplo
![Page 53: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/53.jpg)
Comparação entre Strings
![Page 54: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/54.jpg)
Case Sensitivity
![Page 55: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/55.jpg)
Caractere Curinga
![Page 56: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/56.jpg)
Regex
![Page 57: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/57.jpg)
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)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/58.jpg)
ForEach-Object
![Page 59: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/59.jpg)
Chamando Métodos
Get-Process notepad | ForEach-Object
{
$_.Kill()
}
![Page 60: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/60.jpg)
Exemplo
![Page 61: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/61.jpg)
Foreach
![Page 62: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/62.jpg)
Exemplo
![Page 63: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/63.jpg)
Do...While
![Page 64: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/64.jpg)
While
![Page 65: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/65.jpg)
Saindo de um While
![Page 66: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/66.jpg)
For
![Page 67: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/67.jpg)
Loop com switch
![Page 68: 012powershell-111025093022-phpapp01 (1)](https://reader035.fdocument.pub/reader035/viewer/2022062409/55cf91d6550346f57b913026/html5/thumbnails/68.jpg)
Referência
• WELTNER, Tobias. Mastering Powershell.Disponível em: http://
http://powershell.com/Mastering-PowerShell.pdf