PowerShell é um prompt de comando do sistema operacional Windows. É construído em cima do framework .NET e totalmente orientado a objetos. É fortemente integrado com uma grande quantidade de componentes do Windows.## InstalaçãoA partir do Windows Server 2008 R2 e do Windows 7, o mesmo já vem instalado. Para as versões anteriores, pode ser [baixada](https://www.microsoft.com/pt-br/search/DownloadsDrillInResults.aspx?q=Windows+PowerShell&cateorder=1_5_2_11&ftapplicableproducts=Windows) gratuitamente para instalação.## Cmdlet (command let)A base do PowerShell são os cmdlets. A Microsoft fez várias estratégias de design na concepção de cmdlets no PowerShell. Primeiro é a capacidade de inferir facilmente nomes de cmdlet, ou pelo menos torná-los fáceis de se descobrir.Os cmdlets usam o formato verbo-substantivo como em `Get-Service`, `Stop-Service`, ou `Import-CSV`. O verbo do nome do cmdlet indica a ação a ser executada com o substantivo. Normalmente cmdlets são usados para solicitar informações usando o verbo `Get`, como é o caso com `Get-Process` ou `Get-Content`. Em muitos casos, essas combinações de verbo-substantivo pode ser adivinhado ou previsto por causa da convenção de nomenclatura padrão.Alguns comandos básicos:- **Get-Location:** obter o diretório atual - **Set-Location:** alterar o diretório atual - **Copy-Item:** copiar arquivos - **Remove-Item:** remover um arquivo ou diretório - **Move-Item:** mover um arquivo - **Rename-Item:** renomear um arquivo - **New-Item:** criar um novo arquivo vazio ou diretório## SintaxeAbaixo temos a sintaxe básica para começar a brincar com o PowerShell. :)### Vírgula e ponto e vírgulaA vírgula é frequentemente usada para separar itens em uma lista. Considerando que o ponto e vírgula é usado para dividir ideias separadas.```bash $i=0 $Log = Get-EventLog -List ForEach ($Item in $Log) { '{0,-30} {1,-20} {2,13}' -f ` $Item.Log, $Item.OverflowAction, $Item.MaximumKilobytes; $i++ } ```### EscapeA crase representado como o caractere `` ` `` é o caractere de escape no PowerShell. Você pode usar esse caractere para guias exemplo de impressão `` `t `` ou escapar caracteres com um significado especial como o caractere $ como em `` `$ `` ou escapar citações como `` `' ``.Você também pode usar o caractere de crase para abranger as suas declarações em várias linhas, que às vezes pode vir a calhar.### VariáveisA declaração de variáveis no PowerShell é semelhante ao do PHP, com o prefixo `$`.```bash $example = 'teste' $age = 29 ```### Aspas duplas e simplesEnquanto as asplas duplas interpretam o que está dentro, as aspas simples não interpretam e representam tudo de forma literal.```bash $example = 'ando' write 'test$example' # test$example write 'test$example' # testando ```## Operadores de comparação- **Igual:** -eq - **Diferente:** -ne - **Maior do que:** -gt - **Menor do que:** -lt - **Maior igual a:** -ge - **Menor igual a:** -le - **Comparar com wilcards:** -like ou -notlike - **Comparar string com regex:** -match ou -notmatch - **Se um array contém um valor(pode ser string):** -contains## Operadores lógicos- **e:** -and - **ou:** -or - **ou exclusivo:** -xor - **negação:** ! ou -nor## Executando os scriptsPor padrão, por uma questão de segurança, a possibilidade de execução de scripts Power Shell vem desabilitada. Para habilitar essa característica precisamos mudar a política de execuçãoNo terminal do PowerShell, execute:```bash Get-ExecutionPolicy // O retorno deverá ser Restricted ```Para permitir a execução de scripts sem qualquer restrição, utilizaremos a regra `Unrestricted`, que permite executar todo e qualquer script PowerShell.```bash Set-ExecutionPolicy Unrestricted ```Será exibida uma mensagem informando sobre a proteção quanto à execução de Scripts. Digite 'S' e pressione `Enter`.Agora com o commando `Get-ExecutionPolicy`, veremos que o retorno será `Unrestricted`. Assim, os scripts PowerShell já podem ser executados de forma irrestrita.Existem outras regras além de `Unrestricted` e `Restricted`:- **AllSigned** – Todos os scripts devem ser assinados por alguém confiável. - **Remote Signed** – Todos os scripts que forem baixados da Internet devem ser assinados por alguém confiável. - **Bypass** - A responsabilidade da segurança fica totalmente a cargo do utilizador.## ConclusãoEsse foi apenas umas simples introdução. A maioria dos assuntos merecem um artigo para cada tópico, entao estaremos vendo mais sobre o asunto nos próximos artigos. Sempre é bom conhecer uma linguagem que possamos mexer com o sistema operacional.