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.
Get-Module -Allshell2. 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.
Get-Commandshell3. 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.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]shell4. 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.
Get-Processshell5. 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.
Get-Serviceshell6. 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:
Stop-Process -Name "nombredelproceso"shellStop-Process -Id 3582 -Confirm -PassThrushellPode 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:
Get-Command | ConvertTo-Html > c:\temp\AllCommands.htmlshell8. 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:
Get-Date | ConvertTo-Xmlshell9. 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:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }shell10. 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:
Get-HistoryshellCom o comando seguinte, só vais ver os últimos dez comandos do PowerShell que executaste:
Get-History -Count 10shell11. 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:
Clear-HistoryshellSe 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».
Clear-History -Command *Help*, *Syntaxshell12. 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.
Add-Historyshell13. 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.
Get-Process | Out-File -FilePath .\Process.txtshell14. 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:
Copy-Item "C:\Carpeta1\Archivo.txt" -Destination "C:\Carpeta 2"shell15. 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.
Get-ChildItem -Path C:\EjemploshellOs 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).
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $certshell17. 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:
Invoke-Item "C:\Test\Ejemplo.doc"shell18. 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.
Start-Job -ScriptBlock { Get-Process -Name pwsh }shellExecutar 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:
Clear-Content C:\Temp\Ejemplo.txtshell20. 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:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10shell21. 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 (<) e elementos que só estão no objeto de comparação (>).
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.
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Documento1.txt) -DifferenceObject (Get-Content -Path C:\Test\Documento2.txt)
InputObject SideIndicator
--------------- -----------------
Vienna ==>
Amsterdam ==>
London <==
Paris <==shellOs 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:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"shell23. 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.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3shell24. 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.
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name cishell25. 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:
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>shell26. 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».
Set-Service -Name Nueva Workstation -DisplayName "Vieja Workstation"shell27. 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:
Set-TimeZone -Id "UTC"shell28. 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:
Restart-ComputershellPara outros computadores específicos na sua rede:
Restart-Computer -ComputerName Server01, Server03shell29. 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»:
PS C:\> Restart-Service -DisplayName "net*"shell30. Esvaziar a Reciclagem
É recomendável esvaziar a Reciclagem periodicamente. Podes esvaziá-la a partir do PowerShell utilizando o comando Clear-RecycleBin.
Clear-RecycleBinshell31. Get-ComputerInfo
O comando Get-ComputerInfo é utilizado para consultar informações detalhadas sobre as propriedades do sistema e do sistema operativo.
Get-ComputerInfoshell32. 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».
Move-Item -Path C:\viejo.txt -Destination D:\Temp\nuevo.txtshellMonitorizaçã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:
PS C:\> Debug-Process -Name "Explorer"shellSe 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:
Get-PSBreakpoint | Enable-PSBreakpointshellTambém podes ativar pontos de interrupção utilizando os seus IDs específicos da seguinte forma:
Enable-PSBreakpoint -ID 0, 3, 4shell35. 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:
Disable-PSBreakpoint -Id 0shell36. 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:
Get-Counter -ListSet *shell37. 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.
Start-Sleep -Seconds 2shell38. 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».
Test-Path -Path "C:\Documents and Settings\Usuario"
Falseshell39. 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.
Test-Connection -TargetName Server02 -IPv6shell40. 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:
Get-WinEvent -ListLog *shell