# Comandos do PowerShell: os 40 cmdlets mais importantes

Os comandos do PowerShell são essenciais para uma utilização eficaz do shell. Estes cmdlets estão estruturados de forma lógica e podem ser personalizados com parâmetros adicionais. Neste guia, apresentamos-lhe os 40 comandos mais importantes do PowerShell para que possa trabalhar da melhor forma no seu sistema ou rede.

## O que são os comandos do PowerShell?

O PowerShell, que vem pré-instalado nos sistemas Windows 7 e versões posteriores, permite introduzir comandos de PowerShell para serem executados pelo sistema. Ao contrário dos comandos cmd na linha de comandos, o PowerShell dispõe do seu próprio conjunto de cmdlets, que **são compostos por um verbo e um substantivo** separados por um hífen. Além disso, os comandos do PowerShell podem ser mais detalhados utilizando **parâmetros opcionais**, separados por um espaço. Atualmente, não são apenas os administradores que utilizam o PowerShell, uma vez que a ferramenta oferece serviços muito valiosos para a área do desenvolvimento. Embora existam centenas de comandos do PowerShell pré-instalados, apresentamos aqui os mais importantes.

## Os comandos mais importantes do PowerShell

Os comandos do PowerShell permitem-lhe realizar tarefas de administração complexas com apenas algumas entradas. A seguir, apresentamos os cmdlets que lhe serão mais úteis. Os comandos que vamos mostrar-lhe fornecem uma visão geral da estrutura completa de uma rede, listam outros comandos do PowerShell, ajudam nas configurações de segurança necessárias e geram análises úteis. Aqui estão alguns dos comandos mais importantes do PowerShell:

### 1. Get-Module -All

Utilize o comando **Get-Module -All** para obter uma visão geral completa de todos os módulos do PowerShell que foram importados para o seu sistema.

```shell
Get-Module -All
```

### 2. Get-Command

O comando **Get-Command** fornece uma lista completa de todos os comandos predefinidos do PowerShell disponíveis. Utilize o Get-Command para obter uma lista de todas as ações possíveis, apresentadas de forma organizada e acompanhadas de uma breve explicação de cada cmdlet. Isto aplica-se tanto aos comandos predefinidos como aos que possam estar disponíveis após a instalação de módulos adicionais.

```shell
Get-Command
```

### 3. Get-Help

A lista apresentada pelo comando Get-Command oferece-lhe uma visão geral, mas o cmdlet **Get-Help** fornece-lhe informações mais detalhadas sobre um comando específico e as suas opções. O Get-Help acede aos ficheiros de ajuda presentes no seu computador e fornece-lhe todas as informações disponíveis. Para utilizar esta função de ajuda, basta combinar o Get-Help com o comando cuja sintaxe pretende consultar.

```shell
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
```

### 4. Get-Process

Em várias situações, é útil obter rapidamente uma visão geral de todas as aplicações, programas e processos atualmente em execução no seu sistema. Pode obter essa visão geral utilizando o comando **Get-Process**. Se o utilizar em conjunto com uma aplicação específica, obterá informações detalhadas sobre a mesma.

```shell
Get-Process
```

### 5. Get-Service

O comando **Get-Service** funciona de forma semelhante ao cmdlet Get-Process. No entanto, a diferença reside no facto de o Get-Service fornecer informações sobre todos os serviços ativos no seu sistema. Se pretender obter informações apenas sobre um serviço específico ou um tipo específico de serviço, basta especificar o seu pedido.

```shell
Get-Service
```

### 6. Interromper processo

Pode utilizar vários comandos do PowerShell para interromper processos diretamente a partir da linha de comandos. Uma opção para o fazer é utilizar o comando **Stop-Process**. Introduza o nome, o ID ou outros atributos do processo que pretende interromper, conforme mostrado a seguir:

```shell
Stop-Process -Name "nombredelproceso"
```

```shell
Stop-Process -Id 3582 -Confirm -PassThru
```

Pode solicitar a confirmação da execução do comando utilizando a opção –Confirm. Por sua vez, a opção -PassThru permite-lhe solicitar a confirmação de que o processo foi interrompido. Se não utilizar nenhuma destas duas opções, não receberá qualquer confirmação automaticamente.

### 7. ConvertTo-HTML

Obter uma apresentação clara e rápida é essencial, pois permite identificar possíveis problemas ou complicações o mais cedo possível. O comando **ConvertTo-HTML** converte os resultados dos comandos do PowerShell num ficheiro HTML e apresenta todas as informações de forma organizada, num formato em colunas de fácil leitura. Aqui está um exemplo prático que demonstra a sua eficácia:

```shell
Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
```

### 8. ConvertTo-Xml

Se precisar de representar um objeto específico em formato XML, pode fazê-lo com o comando **ConvertTo-Xml**. No exemplo seguinte, é mostrado como o comando converte a data atual para um formato XML:

```shell
Get-Date | ConvertTo-Xml
```

### 9. Where-Object

O comando **Where-Object** é utilizado para filtrar os resultados de um cmdlet. Ao executar um comando, é comum obter uma quantidade considerável de objetos, mas é provável que nem todos sejam necessários. Por exemplo, se pretender ver apenas os serviços criados ou atualizados durante o ano em curso, pode executar o seguinte comando:

```shell
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
```

### 10. Get-History

Se quiseres ver todos os comandos do PowerShell que executaste durante uma sessão, **o Get-History** é o cmdlet que procuras. O Get-History permite-te obter uma lista completa de todos os comandos do PowerShell que executaste:

```shell
Get-History
```

Com o comando seguinte, só vais ver os últimos dez comandos do PowerShell que executaste:

```shell
Get-History -Count 10
```

### 11. Limpar histórico

Claro, também tem a opção de eliminar o histórico dos comandos do PowerShell que utilizou. Utilize o cmdlet **Clear-History** se quiser eliminar todas as entradas:

```shell
Clear-History
```

Se pretender eliminar apenas determinados comandos do PowerShell, basta adicionar os parâmetros correspondentes. O comando apresentado a seguir elimina todos os comandos do PowerShell que contenham o termo «Help» ou terminem com o termo «Syntax».

```shell
Clear-History -Command *Help*, *Syntax
```

### 12. Adicionar histórico

Também podes adicionar comandos do PowerShell a uma sessão, o que te permite reutilizá-los diretamente na próxima vez. O cmdlet que deves utilizar é **o Add-History**.

```shell
Add-History
```

### 13. Ficheiro de saída

Se quiser guardar no seu computador o resultado obtido com os comandos do PowerShell, utilize o cmdlet **Out-File**. O Out-File guarda os comandos do PowerShell num ficheiro de texto simples no caminho que indicar.

```shell
Get-Process | Out-File -FilePath .\Process.txt
```

### 14. Copiar item

No PowerShell, é possível duplicar elementos e guardar a cópia noutro local. Para tal, utilize o comando **Copy-Item** e especifique também o diretório onde pretende guardar a cópia. Funciona da seguinte forma:

```shell
Copy-Item "C:\Carpeta1\Archivo.txt" -Destination "C:\Carpeta 2"
```

### 15. Get-ChildItem

Utilize o comando **Get-ChildItem** para aceder a itens de um ou vários locais de armazenamento. O Get-ChildItem também apresenta os itens subordinados. Por predefinição, o comando apresenta os atributos, a hora da última modificação, o tamanho do ficheiro e o nome do item. Se um local de armazenamento estiver vazio, não será apresentado nada.

```shell
Get-ChildItem -Path C:\Ejemplo
```

Os atributos são apresentados na categoria «Modo». Aqui estão as propriedades mais comuns:

- a (ficheiro)
- d (diretório)
- h (oculto)
- l (ligação)
- r (somente leitura)
- s (sistema)

### 16. Definir assinatura Authenticode

Utilize o comando **Set-AuthenticodeSignature** para aplicar uma assinatura Authenticode aos seus ficheiros e, assim, protegê-los. No entanto, tenha em atenção que o Set-AuthenticodeSignature só é eficaz em ficheiros compatíveis com o Subject Interface Package (SIP).

```shell
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
```

### 17. Invoke-Item

Utilize o comando **Invoke-Item** se pretender executar uma ação predefinida num ficheiro específico. O comando garante que, por exemplo, um ficheiro executável seja executado diretamente ou que um ficheiro seja aberto na aplicação correspondente. No exemplo que se segue, o ficheiro seria aberto no Microsoft Word por predefinição:

```shell
Invoke-Item "C:\Test\Ejemplo.doc"
```

### 18. Iniciar tarefa

Existe um comando concebido para iniciar tarefas em segundo plano no seu computador local. **O Start-Job** permite-lhe executar um comando específico em segundo plano, sem afetar a sua sessão atual.

```shell
Start-Job -ScriptBlock { Get-Process -Name pwsh }
```

## Executar ações com comandos do PowerShell

Embora os comandos do PowerShell anteriores se centrassem em fornecer uma visão geral, também é possível realizar muitas ações com os cmdlets adequados, permitindo-lhe utilizar o seu sistema de forma mais produtiva. Os seguintes comandos do PowerShell serão úteis nas suas tarefas.

### 19. Limpar conteúdo

O comando **Clear-Content** permite-lhe eliminar o conteúdo de um elemento sem que o próprio elemento seja afetado. Um exemplo da sua aplicação seria um documento cujo texto pretenda eliminar, mantendo o ficheiro em si intacto. O comando seria o seguinte:

```shell
Clear-Content C:\Temp\Ejemplo.txt
```

### 20. ForEach-Object

O comando **ForEach-Object** permite-lhe executar uma ação em todos os elementos de uma coleção de objetos de entrada ao mesmo tempo. No exemplo seguinte, dividimos três números inteiros de uma matriz por 10:

```shell
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
```

### 21. Compare-Object

Pode utilizar o cmdlet **Compare-Object** para evitar ter de comparar manualmente diferentes conjuntos de objetos. O comando gera um relatório que destaca as diferenças entre os conjuntos de objetos. O primeiro conjunto é considerado o objeto de referência, enquanto o segundo funciona como o objeto de comparação. Pode especificar os critérios que pretende comparar. Se omitir esta informação, apenas serão comparados os resultados das cadeias de caracteres. O resultado é apresentado como elementos que só estão no objeto de referência (&lt;) e elementos que só estão no objeto de comparação (&gt;).

No exemplo seguinte, o ficheiro Documento1.txt contém os valores Berlim, Londres e Paris, enquanto o ficheiro Documento2.txt contém os valores Berlim, Viena e Amesterdão.

```shell
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Documento1.txt) -DifferenceObject (Get-Content -Path C:\Test\Documento2.txt)
InputObject	SideIndicator
---------------	-----------------
Vienna		==>
Amsterdam	==>
London		<==
Paris		<==
```

Os elementos contidos em ambos os documentos (neste caso, «Berlim») não são exibidos automaticamente por predefinição.

### 22. Novo objeto

**O New-Object** é um dos comandos mais úteis do PowerShell, permitindo-lhe criar instâncias de um framework .NET ou de um Component Object Model (COM). Por exemplo, se pretender criar um objeto System.Version no construtor com a cadeia de caracteres “1.2.3.4”, o comando funciona da seguinte forma:

```shell
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
```

### 23. Select-Object

Utilize o comando **Select-Object** para selecionar um objeto ou um grupo de objetos que correspondam a determinados parâmetros, os quais pode definir você mesmo. Os parâmetros que pode especificar para este efeito são os seguintes:

- Primeiro
- Último
- Único
- Ignorar
- Índice

No exemplo seguinte, utilizamos os comandos Get-Process e Sort-Object do PowerShell para apresentar os três processos que mais consomem memória no momento em que são executados.

```shell
Get-Process | Sort-Object -Property WS | Select-Object -Last 3
```

### 24. Definir alias

Os atalhos de teclado do Windows oferecem uma forma mais rápida de executar determinadas ações. Da mesma forma, o PowerShell também oferece esta opção. O cmdlet **Set-Alias** permite definir um atalho de teclado para vários comandos do PowerShell. No exemplo seguinte, criamos o alias «ci» para executar o comando Get-ChildItem durante a sessão atual.

```shell
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
```

### 25. Set-Location

Utilize o comando **Set-Location** para alterar o local de armazenamento predefinido do seu trabalho. Os novos locais podem ser diretórios, subdiretórios, locais do registo ou percursos de fornecedores. No exemplo seguinte, definimos a unidade C: como o local de armazenamento atual:

```shell
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
```

### 26. Set-Service

Utilize o cmdlet **Set-Service** para gerir um serviço, seja para o iniciar, parar, colocar em pausa ou alterar as suas propriedades. No exemplo seguinte, alteramos o nome de exibição de um serviço de «Nova Estação de Trabalho» para «Antiga Estação de Trabalho».

```shell
Set-Service -Name Nueva Workstation -DisplayName "Vieja Workstation"
```

### 27. Definir fuso horário

Utilize o comando **Set-TimeZone** para alterar o fuso horário do seu sistema. Se pretender definir a Hora Universal Coordenada (UTC) como o novo fuso horário do seu sistema, utilize o seguinte comando:

```shell
Set-TimeZone -Id "UTC"
```

### 28. Reiniciar o computador

Podes reiniciar o sistema operativo do teu computador local ou de um computador remoto utilizando os comandos adequados do PowerShell, como **o Restart-Computer**. Aqui está a estrutura do comando.

Para o teu computador local:

```shell
Restart-Computer
```

Para outros computadores específicos na sua rede:

```shell
Restart-Computer -ComputerName Server01, Server03
```

### 29. Reiniciar serviço

Pode utilizar o comando **Restart-Service** do PowerShell para parar e reiniciar um serviço. Por exemplo, execute o seguinte comando para reiniciar todos os serviços cujo nome comece por «Net»:

```shell
PS C:\> Restart-Service -DisplayName "net*"
```

### 30. Esvaziar a Reciclagem

É recomendável esvaziar a Reciclagem periodicamente. Podes esvaziá-la a partir do PowerShell utilizando o comando **Clear-RecycleBin**.

```shell
Clear-RecycleBin
```

### 31. Get-ComputerInfo

O comando **Get-ComputerInfo** é utilizado para consultar informações detalhadas sobre as propriedades do sistema e do sistema operativo.

```shell
Get-ComputerInfo
```

### 32. Mover item

Existem vários comandos no PowerShell que permitem mover um elemento de um local para outro. No entanto, o comando mais utilizado para esse fim é **o Move-Item**. No exemplo seguinte, movemos o ficheiro «viejo.txt» da unidade C: para o diretório D:\\Temp, ao mesmo tempo que o renomeamos para «nuevo.txt».

```shell
Move-Item -Path C:\viejo.txt -Destination D:\Temp\nuevo.txt
```

## Monitorização e depuração com os comandos adequados do PowerShell

Os comandos do PowerShell destinados à monitorização e depuração do sistema são ferramentas úteis, especialmente quando se pretende avaliar o desempenho de uma nova rede em condições reais. A seguir, apresentamos os comandos do PowerShell que podem ser-lhe úteis nestas situações.

### 33. Processo de depuração

A depuração é um processo importante para garantir o funcionamento correto de todas as configurações e processos. Para realizar este processo, deve primeiro descarregar e configurar os depuradores adequados. Em seguida, pode utilizar o comando **Debug-Process**. No exemplo seguinte, utilizamos um depurador para o processo Explorer:

```shell
PS C:\> Debug-Process -Name "Explorer"
```

Se quiseres depurar vários processos em simultâneo, basta separá-los com vírgulas.

### 34. Ativar ponto de interrupção no PowerShell

O comando **Enable-PSBreakpoint** permite ativar pontos de interrupção (breakpoints) específicos. Tecnicamente, atribui-se o valor «true» ao cmdlet Enable-PSBreakpoint. Utilize o seguinte comando do PowerShell para ativar todos os pontos de interrupção da sua sessão atual:

```shell
Get-PSBreakpoint | Enable-PSBreakpoint
```

Também podes ativar pontos de interrupção utilizando os seus IDs específicos da seguinte forma:

```shell
Enable-PSBreakpoint -ID 0, 3, 4
```

### 35. Desativar ponto de interrupção

O comando **Disable-PSBreakpoint** permite-lhe desativar os pontos de interrupção do PowerShell. Tecnicamente, atribui-se o valor «false» ao comando Enable-PSBreakpoint. Introduza o seguinte comando para desativar um ponto de interrupção com o ID 0:

```shell
Disable-PSBreakpoint -Id 0
```

### 36. Get-Counter

Quando trabalha com dispositivos que executam sistemas operativos Windows, pode utilizar o comando **Get-Counter** para consultar os seus dados de desempenho a partir do PowerShell. Pode utilizar o comando tanto no seu computador local como num computador remoto. No exemplo seguinte, consultamos os dados de desempenho do computador local:

```shell
Get-Counter -ListSet *
```

### 37. Iniciar-Suspender

Em certas ocasiões, pode ser necessário interromper temporariamente a execução de um script ou de uma sessão, especialmente quando o sistema está sobrecarregado. O PowerShell dispõe do comando **Start-Sleep** para esse fim, que permite especificar o período de tempo durante o qual as atividades devem ser interrompidas. No exemplo seguinte, a execução é interrompida durante dois segundos.

```shell
Start-Sleep -Seconds 2
```

### 38. Test-Path

Utilize o comando **Test-Path** para verificar se um ficheiro existe ou não. Introduza o nome de um ficheiro seguido do seu caminho e verifique se o ficheiro se encontra realmente nesse caminho. Os resultados que pode obter são «True» ou «False».

```shell
Test-Path -Path "C:\Documents and Settings\Usuario"
False
```

### 39. Teste de ligação

Pode verificar as ligações na sua rede através do PowerShell utilizando o comando **Test-Connection**, que envia um pacote de pedido de eco ICMP aos destinatários que especificar e aguarda uma resposta através do Protocolo de Mensagens de Controlo da Internet. No nosso exemplo, enviamos um pedido ao Server02 através do protocolo IPv6.

```shell
Test-Connection -TargetName Server02 -IPv6
```

### 40. Get-WinEvent

Para visualizar um ou vários registos de eventos no PowerShell, pode utilizar vários comandos. Um dos mais práticos é o cmdlet **Get-WinEvent**. Introduza o seguinte comando para ver todos os registos do seu computador local:

```shell
Get-WinEvent -ListLog *
```


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comandos-do-powershell/](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/comandos-do-powershell/) for AI/LLM consumption.