
PowerShell é um shell de linha de comando baseado em tarefas e linguagem de script desenvolvido no .NET. Inicialmente, apenas um componente do Windows.
Ele foi escrito com C# e seu código fonte está disponível no GitHub
O PowerShell já está disponível para Windows 10 e 11, logo, não precisa instalar nada. Mas, se você estiver em outro sistema operacional, como Ubuntu, por exemplo, você pode usar o snap:
sudo snap install powershell --classicApós instalado, basta confirmar a instalação verificando a versão, ex.:
pwsh --version
PowerShell 7.5.0Abaixo alguns exemplos de uso.
Crie um arquivo com extensão .ps1, exemplo: main.ps1 e insira o conteúdo abaixo:
# Programa básico com PowerShell
Write-Host 'Hello, World!'Comentários podem ser feitos usando o tralha:
#
Salve e rode com o comando:
pwsh main.ps1A saída deverá ser: Hello, World!.
Exemplo download do arquivo 81by.txt e salvar com o nome: logo-ps.png.
Sempre é necessário direcionar para um arquivo local com
-OutFile.
Invoke-WebRequest -Uri "http://0x0.st/81by.txt" -OutFile "logo-ps.png"Precisa do cifrão estilo PHP e Perl.
$url = "http://0x0.st/81by.txt"
$file = "logo-ps.png"
Write-Host "A url é: " + $url + " e o arquivo: " $fileO operador de concatenação:
+(mais) é opcional, poderia ser também:
Write-Host "A url é: " $url " e o arquivo: " $fileif elseVerificar se o arquivo foi salvo com sucesso:
$url = "http://0x0.st/81by.txt"
$file = "logo-ps.png"
Write-Host "A url é: " + $url + " e o arquivo: " $file
Invoke-WebRequest -Uri $url -OutFile $file
if(Test-Path $file 2>$null && (Get-Content $file 2>$null)){
Write-Host "Arquivo foi baixado com sucesso!"
}else{
Write-Host "Falha ao baixar o arquivo ou o arquivo está vazio."
}Note também o uso de:
&& operador lógico2>$url similar ao 2>/dev/nullTest-Path e Get-ContentAdicionando funções para otimizar rotinas. Tudo que fizemos anteriormente, mas agora dentro de uma função que podemos mudar a URL e o nome do arquivo sempre precisar reescrever sempre que quisermos reutilizar para outros fins.
$url = "http://0x0.st/81by.txt"
$file = "logo-ps.png"
Function SaveFile {
param($url, $file)
Write-Host "A url é: " + $url + " e o arquivo: " $file
Invoke-WebRequest -Uri $url -OutFile $file
if(Test-Path $file 2>$null && (Get-Content $file 2>$null)){
Write-Host "Arquivo foi baixado com sucesso!"
}else{
Write-Host "Falha ao baixar o arquivo ou o arquivo está vazio."
}
}
SaveFile $url $fileAlguns detalhes nesse código:
param() que está dentro do bloco de chavesSaveFile $1 $2 e não: SaveFile($1, $2), mas em alguns outros casos, como inteiros podemos usar estilo a maioria das linguagens de programação, exemplo:Function IncNumber {
param($x)
++$x
Write-Host $x
}
IncNumber(2) # 3Nesse outro exemplo, note também o uso do operador ++ do lado esquerdo para incrementar.
Nesse caso, vamos ver o conteúdo do próprio arquivo: main.ps1, estilo comando cat:
Comentamos a chamada da função:
SaveFilee adicionamos mais uma linha com:
Get-Content "main.ps1"A saída será:
$url = "http://0x0.st/81by.txt"
$file = "logo-ps.png"
Function SaveFile {
param($url, $file)
Write-Host "A url é: " + $url + " e o arquivo: " $file
Invoke-WebRequest -Uri $url -OutFile $file
if(Test-Path $file 2>$null && (Get-Content $file 2>$null)){
Write-Host "Arquivo foi baixado com sucesso!"
}else{
Write-Host "Falha ao baixar o arquivo ou o arquivo está vazio."
}
}
#SaveFile $url $file
Get-Content "main.ps1"Pedindo confirmação para ver se ele realmente deseja ver o arquivo:
$resposta = Read-Host "Você deseja visualizar o arquivo? (sim/não)"
if ($resposta -eq "sim" -or $resposta -eq "s") {
Get-Content "main.ps1"
} else {
Write-Host "Você escolheu não exibir o arquivo."
}Note também o uso do operador -or(equivalente a ||) para se aresposta for sim ou s.
Para mais informações baixe esse PDF e acesse os links abaixo: