PowerShell commands: Os 40 comandos PoweShell mais importantes
Ao fazer uso dos comandos PowerShell (PowerShell commands) certos, você conseguirá implementar e automatizar tarefas com muito mais rapidez e precisão. Chamados de cmdlets
, eles também podem ser personalizados com a adoção de parâmetros operacionais. Este tutorial apresenta a você os 40 comandos PowerShell mais importantes, para ajudá-lo a otimizar o seu trabalho em ambientes Windows.
O que são PowerShell commands?
O PowerShell, ambiente de linha de comando e linguagem de script da Microsoft, vem pré-instalado em todas as versões mais novas do Windows (a partir do Windows 7). Ele possibilita a execução de tarefas administrativas e o gerenciamento de sistemas, por meio de comandos cmd
. Especificamente no PowerShell, comandos são chamados de cmdlets
. Estes, compostos por um verbo e por um substantivo separados por hífen, só podem ser entendidos por essa ferramenta. A vantagem de cmdlets
é que eles podem ser personalizados por parâmetros operacionais separados por espaços.
Em ambientes Windows, o PowerShell não é valioso somente para administradores de sistemas, mas também para desenvolvedores. Ao aprenderem os comandos PowerShell mais importantes, estes profissionais economizam tempo e aumentam a produtividade.
Comandos PowerShell básicos
Como já explicado, comandos PowerShell permitem a realização de tarefas administrativas com bem menos esforço. Dentre os PowerShell commands mais básicos e frequentemente utilizados estão aqueles capazes de apresentar panoramas sobre a estrutura da rede, de listar outros comandos, de auxiliar nas configurações de segurança essenciais e de possibilitar a realização de análises. Apresentaremos, abaixo, os comandos PowerShell que mais lhe ajudarão no dia a dia, e explicaremos cada um deles:
1. Get-Module -All
Para obter um panorama com todos os módulos PowerShell importados, faça uso do comando Get-Module -All.
Get-Module -All
shell2. Get-Command
Existem por aí algumas centenas de comandos PowerShell predefinidos. Para obter uma lista com todos eles, basta fazer uso do comando Get-Command. Ele apresenta, de forma ordenada, todas as possíveis ações, juntamente com breves explicações sobre cada cmdlet
— comandos continuam válidos mesmo após a instalação de módulos adicionais.
Get-Command
shell3. Get-Help
O comando Get-Command, apresentado acima, fornece apenas informações básicas sobre PowerShell commands. Se você procura por informações mais detalhadas sobre um comando específico, assim como sobre suas opções, opte pelo cmdlet
Get-Help. Ele acessa os arquivos de ajuda do seu computador e apresenta todas as informações lá disponibilizadas. Para executá-lo, combine Get-Help com o comando cuja sintaxe você deseja consultar.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell4. Get-Process
Para checar superficialmente a sua lista de aplicações, programas e processos ativos no sistema, use o comando Get-Process. Ao especificar uma aplicação, você receberá informações adicionais a respeito dela.
Get-Process
shell5. Get-Service
O comando Get-Service funciona de forma similar ao Get-Process. No entanto, ele apresenta informações relativas a todos os serviços ativos. Se você procura mais informações sobre um serviço ou categoria de serviços em particular, também é possível especificar a solicitação.
Get-Service
shell6. Stop-Process
Vários PowerShell commands têm o poder de interromper processos pelo ambiente de linha de comando. Um deles é o cmdlet
Stop-Process. Defina o processo correspondente inserindo seu nome, ID ou outro atributo que o especifique.
Stop-Process -Name "nome do processo"
shellObserve o exemplo:
Stop-Process -Id 3582 -Confirm -PassThru
shellCom -Confirm, a confirmação do comando será solicitada. Já -PassThru solicitará a confirmação do processo interrompido — isso não pode ser feito automaticamente.
7. ConvertTo-HTML
Para identificar problemas ou potenciais complicações com rapidez, é de extrema importância que você leia e compreenda códigos de forma clara. Para facilitar a visualização deles, faça uso do PowerShell command ConvertTo-HTML: ele transforma resultados PowerShell em arquivos HTML, de compreensão mais intuitiva. A estrutura desse comando costuma ser a seguinte:
Get-Command | ConvertTo-Html > c:\temp\Comandos.html
shell8. ConvertTo-Xml
Você pode proceder de forma semelhante se quiser obter a representação de um objeto específico em XML. Faça essa conversão com o comando ConvertTo-Xml. No exemplo abaixo, convertemos a data atual para o formato XML:
Get-Date | ConvertTo-Xml
shell9. Where-Object
Use o PoweShell command Where-Object para filtrar o resultado de um cmdlet
. Ao executar um cmdlet
, você poderá receber respostas contendo bem mais informações que as estritamente necessárias. Execute, em seguida, o Where-Object com um pipe, para que apenas as informações que você procura sejam exibidas. Por exemplo, para ver os serviços criados ou atualizados neste ano, você poderia executar o comando abaixo:
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2024" }
shell10. Get-History
Para listar todos os PowerShell commands que você executou durante uma sessão, use o cmdlet
Get-History.
Get-History
shellJá para listar apenas os últimos dez comandos PowerShell executados, use a seguinte especificação:
Get-History -Count 10
shell11. Clear-History
Você também pode excluir a lista de PowerShell commands que utilizou. Para deletar todas as entradas de uma só vez, use o cmdlet
Clear-History:
Clear-History
shellPara excluir somente comandos PowerShell específicos, faça uso de parâmetros que os identifiquem. No exemplo de código abaixo, determinamos a exclusão do registro de todos os comandos contendo a palavra “Help” e terminados em “Syntax”.
Clear-History -Command *Help*, *Syntax
shell12. Add-History
Também é possível vincular comandos PowerShell a sessões específicas, para que eles possam ser chamados a qualquer momento. O cmdlet
certo para fazer isso é Add-History.
Add-History
shell13. Out-File
Para salvar, no seu computador, os resultados produzidos por comandos PowerShell por você utilizados, use o cmdlet
Out-File. Ele armazena PowerShell commands em um arquivo de texto bruto no local especificado.
Get-Process | Out-File -FilePath .\Processo.txt
shell14. Copy-Item
O PowerShell também permite que elementos sejam copiados e salvos em diferentes locais. Basta usar o comando Copy-Item e especificar o diretório em que a cópia deve ser salva.
Copy-Item "C:\pasta1\arquivo.txt" -Destination "C:\pasta2"
shell15. Get-ChildItem
Use o cmdlet
Get-ChildItem para buscar itens em um ou mais locais de armazenamento. Caso eles contenham subelementos, estes também serão exibidos. Por padrão, esse comando PowerShell lista os atributos, a data e a hora da última modificação, assim como o tamanho do arquivo e o nome dos subelementos. Por outro lado, se o local de armazenamento estiver vazio, o resultado será omitido.
Get-ChildItem -Path C:\exemplo
shellOs atributos correspondentes são exibidos abaixo da linha “Mode”. Suas propriedades mais comuns são:
- a (arquivo)
- d (diretório)
- h (oculto)
- l (link)
- r (somente leitura)
- s (sistema)
16. Set-AuthenticodeSignature
Para proteger seus arquivos, você pode equipá-los com uma assinatura Authenticode. Para tanto, use o comando Set-AuthenticodeSignature. Saiba, contudo, que ela só poderá ser adicionada a arquivos que oferecem suporte ao Subject Interface Package (SIP).
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell17. Invoke-Item
Se você quer realizar uma ação padrão associada a um arquivo específico, o comando PowerShell Invoke-Item é o ideal. Ele assegura, por exemplo, a execução direta de um arquivo executável (extensão .exe) ou a abertura de um documento na aplicação padrão. No nosso exemplo, o arquivo em questão será automaticamente aberto pelo Microsoft Word, aplicação padrão da extensão .doc:
Invoke-Item "C:\Teste\exemplo.doc"
shell18. Start-Job
Para iniciar uma tarefa em segundo plano no seu computador local, você deve usar o comando Start-Job. Ele possibilita a execução de um comando específico em segundo plano sem que este interaja com a sessão atual.
Start-Job -ScriptBlock { Get-Process -Name pwsh }
shellO encontro do hardware com a nuvem: servidor dedicado com nuvem integrada e cobrança por minuto, incluindo assistente pessoal!
- Suporte 24 horas
- Tráfego ilimitado
- Certificado SSL
Comandos PowerShell para executar ações
Os comandos PowerShell até então apresentados são voltados à exibição de diferentes tipos de panoramas. Contudo, um cmdlet
também é capaz de executar uma ação e melhorar a eficiência do seu sistema. Conheça, agora, PowerShell commands capazes de simplificar o seu fluxo de trabalho.
19. Clear-Content
Para apagar o conteúdo de um elemento, mas preservar o elemento em si, faça uso do cmdlet
Clear-Content. Por exemplo, ele pode ser usado para limpar o texto de um documento, deixando o arquivo em si intacto. Execute-o com o seguinte código:
Clear-Content C:\Temp\exemplo.txt
shell20. ForEach-Object
O comando ForEach-Object possibilita a realização de operações em todos os elementos de uma coleção de objetos de entrada. Neste exemplo, dividimos três inteiros de um array por 10:
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
shell21. Compare-Object
Para que você não precise comparar diferentes conjuntos de objetos manualmente, execute o PowerShell command Compare-Object. Ele gera um relatório que destaca diferenças entre registros: o primeiro registro serve como objeto de referência enquanto o segundo representa o objeto de diferença. Especifique os fatores a serem comparados ou omita essa informação para obter apenas resultados de strings que serão comparados. Resultados são divididos em propriedades que só aparecem no objeto de referência (<==) e em propriedades que só estão presentes no objeto de diferença (==>). No exemplo a seguir, o Documento1.txt contém os valores Berlim, Londres e Paris. Já o Documento2.txt contém Berlim, Viena e Amsterdã.
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Documento1.txt) -DifferenceObject (Get-Content -Path C:\Test\Documento2.txt)
InputObject SideIndicator
--------------- -----------------
Viena ==>
Amsterdã ==>
Londres <==
Paris <==
shellPor padrão, o conteúdo presente em ambos os documentos (nesse caso, “Berlim”) não é exibido.
22. New-Object
Um dos comandos PowerShell mais úteis é o New-Object. Ele pode ser usado para instanciar um objeto do .NET Framework ou do Component Object Model (COM). Por exemplo, para criar um objeto System.Version com “1.2.3.4” como string construtora, execute o comando a seguir:
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell23. Select-Object
Use o comando Select-Object para selecionar um objeto ou grupo de objetos que apresenta propriedades definidas por você. Estes são os parâmetros que podem ser especificados:
- First
- Last
- Unique
- Skip
- Index
No exemplo de código abaixo, usamos os comandos Get-Process e Sort-Object para que os três processos com o mais alto consumo de memória no momento da execução sejam exibidos.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell24. Set-Alias
Assim como atalhos de teclado do Windows facilitam a execução de ações no sistema operacional, comandos PowerShell facilitam trabalhos neste mesmo ambiente. O cmdlet
Set-Alias, por exemplo, pode ser usado para definir atalhos de comandos PowerShell. No próximo exemplo, apelidamos de “ci” o comando Get-ChildItem quando executado na sessão atual.
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell25. Set-Location
Para alterar o local da memória de trabalho, use o comando Set-Location. Entre as opções disponíveis estão diretórios, subdiretórios, locais de registro e caminhos do provedor. Abaixo, especificamos o disco C: como local de armazenamento.
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell26. Set-Service
Você pode usar o cmdlet
Set-Service para interagir com um serviço, iniciá-lo, interrompê-lo ou pausá-lo. Ele também permite a alteração de propriedades desse mesmo serviço. A seguir, 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 Nova Estação de Trabalho -DisplayName "Antiga Estação de Trabalho"
shell27. Set-TimeZone
Para alterar o fuso horário do seu sistema, faça uso do PowerShell command Set-TimeZone. Para coordenar o tempo universal como novo horário do sistema, digite o seguinte:
Set-TimeZone -Id "UTC"
shell28. Restart-Computer
Você consegue reiniciar o sistema operacional do seu computador local ou remoto por meio do PowerShell command Restart-Computer. Ele pode ser executado das seguintes formas:
No computador local:
Restart-Computer
shellEm computadores específicos de uma rede:
Restart-Computer -ComputerName Servidor01, Servidor03
shell29. Restart-Service
Para interromper e reiniciar um serviço, opte pelo cmdlet
Restart-Service. Para reiniciar todos os serviços iniciados com “net”, por exemplo, proceda da seguinte forma:
PS C:\> Restart-Service -DisplayName "net*"
shell30. Clear-RecycleBin
Esvazie a sua lixeira com regularidade. Com o PowerShell, você pode executar essa ação por meio do cmdlet
Clear-RecycleBin.
Clear-RecycleBin
shell31. Get-ComputerInfo
O cmdlet
Get-ComputerInfo pode ser usado para consultar propriedades do seu sistema ou sistema operacional.
Get-ComputerInfo
shell32. Move-Item
Diferentes PowerShell commands têm a capacidade de realocar um item, movendo-o de um local para outro. O mais popular deles é o Move-Item. No exemplo abaixo, movemos o arquivo “antigo.txt” do disco C: para o diretório D:\Temp. Ao mesmo tempo, renomeamos o arquivo para “novo.txt”.
Move-Item -Path C:\antigo.txt -Destination D:\Temp\novo.txt
shellComandos PowerShell de monitoramento e depuração
Alguns PowerShell commands considerados especialmente interessantes possibilitam o monitoramento e a verificação do sistema. Estes são uteis em situações de teste de desempenho de rede sob condições realistas. A seguir, listamos os comandos PowerShell mais importantes que servem a essas finalidades.
33. Debug-Process
O processo de depuração (debugging) é importante, pois assegura que todas as configurações e processos rodem sem erros. Antes de executar o Debug-Process, contudo, você deverá baixar e configurar os depuradores certos. No próximo exemplo, depuramos o Explorer:
PS C:\> Debug-Process -Name "Explorer"
shellPara depurar vários processos simultaneamente, adicione-os, um a um, separando-os por vírgulas.
34. Enable-PSBreakpoint
Para ativar determinados pontos de interrupção (breakpoints), faça uso de Enable-PSBreakpoint. Ele define o valor do cmdlet
como “verdadeiro” (true) pelo prisma técnico. Execute esse PowerShell command para ativar todos os pontos de interrupção da sessão atual:
Get-PSBreakpoint | Enable-PSBreakpoint
shellAbaixo, observe um exemplo desse cmdlet
sendo usado para ativar pontos de interrupção por meio de IDs:
Enable-PSBreakpoint -ID 0, 3, 4
shell35. Disable-PSBreakpoint
Para desativar pontos de interrupção do PowerShell, o cmdlet
certo é o Disable-PSBreakpoint. Pelo mesmo prisma técnico, ele define o valor do comando Enable-PSBreakpoint como “falso” (false). Para desativar um ponto de interrupção cujo ID é 0, você deve executar o seguinte comando:
Disable-PSBreakpoint -Id 0
shell36. Get-Counter
Em ambientes Windows, é possível consultar dados de desempenho por meio do PowerShell. O comando que executa essa tarefa é o Get-Counter, que pode ser usado tanto no seu computador local quanto em computadores remotos. No exemplo a seguir, consultamos dados no computador local:
Get-Counter -ListSet *
shell37. Start-Sleep
Pausar um script ou sessão pode ser de fundamental importância, especialmente quando o sistema enfrenta sobrecargas. Para tanto, o PowerShell oferece o comando Start-Sleep: ele permite que você especifique o tempo pelo qual suas atividades devem ser pausadas. No próximo exemplo, pausamos a execução por dois segundos:
Start-Sleep -Seconds 2
shell38. Test-Path
Use o comando Test-Path para verificar se todos os elementos de um caminho específicos se encontram presentes. Os resultados possíveis são “verdadeiro” (true) e “falso” (false).
Test-Path -Path "C:\Documents and Settings\user"
False
shell39. Test-Connection
Você também pode avaliar a conectividade da sua rede com o PowerShell. Faça isso ao enviar pacotes “ICMP Echo Request” aos destinatários especificados, por meio do cmdlet
Test-Connection — ele solicita respostas por meio do Internet Control Message Protocol (ICMP). No nosso exemplo, enviamos uma solicitação ao Servidor02 por meio do protocolo IPv6.
Test-Connection -TargetName Servidor02 -IPv6
shell40. Get-WinEvent
Diferentes PowerShell commands possibilitam a visualização de um ou mais registros de eventos. O cmdlet
mais simples que atende esse propósito é o Get-WinEvent. Para consultar todos os registros do seu computador local, use o comando a seguir:
Get-WinEvent -ListLog *
shell