# PowerShell

PowerShell é um shell de linha de comando baseado em tarefas e linguagem de script desenvolvido no .NET. Inicialmente, apenas um componente do Windows, o PowerShell tornou-se de código aberto e multiplataforma em 18 de agosto de 2016 com a introdução do PowerShell Core.
No PowerShell, tarefas administrativas são realizadas através de cmdlets (pronuncia-se command-lets), que são classes .NET especializadas que implementam uma operação específica.
Atualmente os produtos Server da Microsoft devem fornecer suporte à automatização via PowerShell, segundo seu Common Engineering Criteria. O Windows PowerShell é integrado como componente opcional do Windows Server 2008, habilitado por padrão desde o Windows Server 2008 R2 (exceto instalação core) e Windows 7, e pode ser baixado separadamente para Windows XP SP2, Windows Vista e Windows Server 2003.

## Projeto

Os desenvolvedores do PowerShell basearam a gramática núcleo da ferramenta naquela do POSIX 1003.2.
O Windows PowerShell pode executar quatro tipos de comandos nomeados:
* cmdlets (programas baseados no framework .NET projetados para interagir com o PowerShell)
* Scripts PowerShell (arquivos sufixados por .ps1)
* Funções PowerShell
* programas executáveis isolados
Se um comando for um programa executável isolado, o PowerShell.exe executa-o em um processo separado; se ele for um cmdlet, ele executa-o no processo PowerShell. O PowerShell fornece uma interface de linha de comando interativa, em que os comandos podem ser inseridos e sua saída exibida. A interface do usuário, baseada no console Win32, oferece complementação por tabulação personalizável. O PowerShell permite a criação de apelidos (aliases) para cmdlets, os quais o PowerShell traduz textualmente em invocações dos comandos originais.

### Cmdlets

Cmdlet (pronuncia-se "command let") são comandos usados pelo PowerShell que implementam funções específicas. Segue uma regra de verbo-substantivo, como por exemplo "Stop-process" (parar o processo).
Alguns comandos básicos:
| Cmdlet | Function |
| 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 |

## Versões
### Versão 1.0

Essa versão foi desenvolvida para Windows server 2003 e Windows XP.
Algumas das principais funcionalidades são:
* Mais de 130 ferramentas de linha de comandos fáceis de usar e aprender
* Suporte para linguagens de script e ferramentas de linha de comando existentes
* Recurso que permite a navegação nos dados armazenados.

#### Requisitos do sistema

A versão 1.0 pode ser instalada nos seguintes sistemas operacionais:
* Microsoft Windows Server 2003 com SP1 ou Windows XP com SP2
* O Microsoft.NET Framework 2.0 (2.0.50727)

### Versão 2.0

Disponível nativamente no Windows 7 e no Windows server 2008 R2 e para instalação no Windows XP, Windows Server 2003, Windows Vista e Windows Server 2008.
As funcionalidades que podemos destacar são:
* Execução de comandos remotamente
* Depuração de Script
* Tratamento de eventos

#### Requisitos do sistema

A versão 2.0 pode ser instalada nos seguintes sistemas operacionais:
* Windows Server 2008 com Service Pack 1
* Windows Server 2008 com Service Pack 2
* Windows Server 2003 com Service Pack 2
* Windows Vista com Service Pack 2
* Windows Vista com Service Pack 1
* Windows XP com Service Pack 3

### Versão 3.0

Nos sistemas operacionais Windows Server 2012 ou o Windows Server 2012 R2 a instalação não é necessária pois já faz parte do sistema operacional.
Alguns de seus novos recursos:
* Tarefas agendadas
* Administração delegada
* Sintaxe de linguagem simplificada

#### Requisitos do sistema

* Windows 7 Service Pack 1
* Windows Server 2008 R2 SP1
* Windows Server 2008 Service Pack 2

### Versão 4.0

Essa versão é nativa nas versões do Windows 8.1 e no Windows Server 2012 R2.
Alguns dos novos recursos oferecidos são:
* Suporte para fluxo de trabalho e depuração de script remotamente
* Suporte de atualização da versão 3.0 para 4.0 (caso seja possível)
* Correções de bugs e melhoria de desempenho

#### Requisitos do sistema

* Windows 7 SP1
* Windows Server 2008 R2 SP1
* Windows Server 2012.