Três pilares do PowerShell para administração do Windows

Advertisement

PowerShell é uma plataforma de linha de comando e script projetada para auxiliar os administradores de sistema no gerenciamento e automação de tarefas em um ambiente Windows.

Advertisement

Criado no .NET Framework, o PowerShell tem recursos melhores do que a linha de comando tradicional. Ele dá suporte a cmdlets, objetos e pipelines, que permitem que os usuários executem tarefas complexas com facilidade.

O PowerShell é uma ferramenta muito importante na administração do Windows. Com os recursos existentes, os administradores podem:

Advertisement

PowerShell não apenas aumenta a produtividade, mas também oferece mais flexibilidade para resolver problemas diretamente, mesmo em ambientes de sistema grandes e complexos. Isso o torna uma ferramenta obrigatória para administradores modernos que precisam de uma solução rápida e precisa.

O que são cmdlets?

Cmdlets são pequenos programas criados para executar tarefas específicas no PowerShell. Eles servem como uma ferramenta para gerenciar e automatizar vários aspectos do sistema operacional Windows.

Advertisement

Os cmdlets são escritos na forma de classes .NET, geralmente usando o C. Os cmdlets podem ser incluídos no PowerShell ou fazer parte de outros aplicativos e serviços, como recursos do VMware ou do Windows Server. Com cmdlets, os usuários podem facilmente recuperar informações, alterar configurações e executar várias outras operações.

Exemplos de comandos populares

Dois exemplos de cmdlets comumente usados são:

1. Get-Process

Esses cmdlets são usados para obter informações sobre todos os processos que estão sendo executados no sistema. Por exemplo, executar o seguinte comando exibirá uma lista de todos os processos ativos:

Get-Process

2. Get-Service

Esses cmdlets são usados para obter informações sobre todos os serviços listados no sistema. Com este comando, o usuário pode ver o status do serviço (em execução ou parado):

Get-Service

Vantagens de usar a sintaxe substantivo-verbo em cmdlets

Um dos recursos de destaque dos cmdlets é o uso estrito da sintaxe noun-verb. Isso significa que cada cmdlet é nomeado com um padrão claro, em que a primeira parte (substantivo) indica o objeto gerenciado e a segunda parte (verbo) indica a ação executada no objeto. Exemplos:

  • Get: Recuperando informações.
  • Set: Altere a configuração.
  • Remove: Exclua um objeto.

As vantagens dessa sintaxe incluem:

  • Os usuários podem encontrar facilmente outros cmdlets relevantes entendendo o padrão de nomenclatura.
  • A sintaxe consistente ajuda os novos usuários a aprender e usar cmdlets mais rapidamente.
  • Nomes de cmdlets claros facilitam a leitura e a compreensão dos scripts.

Objetos no PowerShell

No PowerShell, um objeto é uma estrutura de dados que descreve uma entidade específica em um sistema, como um arquivo, processo ou serviço. Cada objeto tem properties (atributos) e methods (métodos) que fornecem informações e funções relacionadas a essa entidade.

As propriedades são as características de um objeto, enquanto os métodos são ações que podem ser executadas em um objeto. Por exemplo, um objeto de processo pode ter propriedades como nome do processo, uso da CPU e status.

Como Get-Process gera objetos com propriedades como uso da CPU

Quando você executa o cmdlet Get-Process, o PowerShell gera um objeto que representa todos os processos ativos no sistema. Cada um desses objetos de processo tem várias propriedades, incluindo:

  • Name: O nome do processo.
  • Id: Identificação única para o processo.
  • CPU: Uso da CPU por processos.

Exemplo de comando:

Get-Process

Esse comando fornecerá uma lista de objetos de processo e, se você quiser ver mais informações sobre um dos objetos, poderá usar o cmdlet Get-Member para descobrir as propriedades e os métodos existentes:

Get-Process | Get-Member
powershell Get Process

Isso exibirá todas as propriedades e métodos do objeto gerado pelo Get-Process, incluindo o uso da CPU.

Benefícios dos objetos para automação de tarefas administrativas

O uso de objetos no PowerShell tem muitas vantagens para a automação de tarefas administrativas:

  1. Com objetos, os administradores podem acessar e modificar dados facilmente sem precisar executar processamento de texto complexo. Isso acelera o gerenciamento de informações e melhora a precisão.
  2. Os objetos tornam os scripts do PowerShell mais claros e fáceis de entender. Os administradores podem usar diretamente as propriedades dos objetos no script para executar ações específicas.
  3. O PowerShell permite que os usuários conectem cmdlets por meio de pipelines, em que a saída de um cmdlet pode ser usada como entrada para outros cmdlets. Isso facilita o processamento de dados de forma sequencial e eficiente.
  4. Como o PowerShell é criado no .NET, cada objeto no PowerShell é um objeto .NET. Ele fornece acesso a uma ampla variedade de métodos e propriedades, expandindo os recursos de gerenciamento do sistema.

Benefícios dos objetos para automação de tarefas administrativas

O uso de objetos no PowerShell tem muitas vantagens para a automação de tarefas administrativas:

1. Facilidade de manipulação de dados

Você pode filtrar, classificar ou modificar os dados facilmente. Por exemplo:

Get-Process | Where-Object {$_.CPU -gt 5}

Este comando mostrará apenas processos com mais de 5% de uso da CPU.

2. Integração com outros cmdlets

Os objetos podem ser passados para outros cmdlets por meio do pipeline, permitindo a criação de scripts complexos. Exemplo:

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5

Este comando exibe os 5 processos com o maior uso da CPU.

3. Eficiência do script

Com objetos, você pode criar scripts mais precisos e eficientes, reduzindo o risco de erros frequentes na análise de texto bruto.

Usando pipelines para automação

Pipeline é um ótimo recurso no PowerShell que permite transmitir resultados de um cmdlet para outro. Este conceito usa o símbolo | (pipe) para conectar cmdlets, para que você possa criar um processo de automação mais eficiente e flexível.

Em PowerShell, os pipelines servem para fluir objects from um cmdlet para outro. Símbolo | Separe os cmdlets e permita que os resultados do primeiro cmdlet sejam passados para o segundo cmdlet sem armazenar dados temporários.

Um exemplo simples:

Get-Process | Sort-Object CPU -Descending
  • Get-Process: Recupera uma lista de todos os processos ativos no sistema.
  • Sort-Object CPU -Descending: Classifica os processos com base no uso da CPU do mais alto.

O resultado é uma lista de processos que foram classificados por uso da CPU.

Agrupando processos com base no uso de memória virtual

Por exemplo, digamos que você queira saber quais aplicativos usam mais Virtual Memory (VM) e agrupar processos pela empresa que os criou. Aqui estão os passos:

  1. Use Get-Process para executar todos os processos.
  2. Classifique os processos por uso da VM.
  3. Pegue um número específico de processos, como os 10 primeiros.
  4. Agrupe processos por propriedades Company.

O código completo:

Get-Process |
Sort-Object VM -Descending |
Select-Object -First 10 |
Group-Object Company
  • Sort-Object VM -Descending: Classifica os processos com base no uso Virtual Memory do mais alto.
  • Select-Object -First 10: selecione os 10 principais processos com o maior uso de VM.
  • Group-Object Company: agrupe os processos pelo nome da empresa que os criou.

A saída mostrará o Company mana yang memiliki proses dengan penggunaan Virtual Memory.

Como combinar cmdlets para soluções mais complicadas

Os pipelines facilitam a combinação de cmdlets e a criação de soluções mais complexas sem a necessidade de escrever código difícil. Por exemplo, se você quiser encontrar um processo que está usando uma CPU alta e interrompê-lo, poderá usar o seguinte pipeline:

Get-Process |
Where-Object {$_.CPU -gt 50} |
Stop-Process
  • Where-Object {$_.CPU -gt 50}: filtra processos que têm mais de 50% de uso da CPU.
  • Stop-Process: interrompe o processo filtrado.

Esse funil permite automatizar tarefas com etapas claras e organizadas. Você também pode adicionar parâmetros para tornar a solução mais específica, como enviar um relatório dos resultados:

Get-Process |
Where-Object {$_.CPU -gt 50} |
Export-Csv -Path “HighCPUProcesses.csv”

Esse pipeline armazenará os dados do processo com uso intensivo de CPU em um arquivo CSV.

Automação com o PowerShell

Um cmdlet muito útil no PowerShell é Get-WindowsOptionalFeature. Esse cmdlet permite que os usuários exibam recursos opcionais disponíveis no Windows, incluindo seu status (habilitado ou desabilitado). Usando esses cmdlets, os administradores podem gerenciar e auditar facilmente os recursos existentes.

Para exibir todos os recursos opcionais no Windows, você pode executar o seguinte comando:

Get-WindowsOptionalFeature -Online

Este comando gerará uma lista de objetos que representam cada recurso opcional, completo com propriedades como FeatureName, State e uma descrição do recurso.

Etapas para criar um script simples para automação

Aqui estão as etapas para criar um script simples que usa Get-WindowsOptionalFeature para auditar e habilitar automaticamente determinados recursos:

  1. Execute o PowerShell com privilégios de administrador para garantir que você tenha as permissões necessárias.
  2. Use o cmdlet Get-WindowsOptionalFeature para obter uma lista de todos os recursos opcionais.
$features = Get-WindowsOptionalFeature -Online
  1. Por exemplo, se você quiser verificar se o recurso “TelnetClient” está habilitado ou não, você pode filtrar os resultados.
$telnetFeature = $features | Onde-Objeto { $_. Nome do recurso -eq 'TelnetClient' }
  1. Se o recurso não estiver ativo, você poderá habilitá-lo usando o cmdlet Enable-WindowsOptionalFeature.
if ($telnetFeature.State  -eq 'Disabled') {
Enable-WindowsOptionalFeature -Online -FeatureName 'TelnetClient' -All
Write-Host “TelnetClient feature has been enabled.”
} else {
Write-Host “TelnetClient feature is now active.”
}
  1. Salve esse script como um arquivo .ps1, por exemplo, EnableTelnet.ps1, e execute-o no PowerShell.

Últimos artigos