PowerShell

PowerShell

https://ayo.so/morganbinbash

Conceitos básicos do PowerShell

a) Cmdlets:

Cmdlets são pequenos comandos no PowerShell projetados para executar uma única operação. Por exemplo, Get-Content lê o conteúdo de um arquivo, enquanto Set-Content grava o conteúdo em um arquivo. Os cmdlets podem ser combinados e sua saída pode ser manipulada para lidar com tarefas complexas. Eles constituem a base da funcionalidade do PowerShell.

b) Scripts:

Os scripts do PowerShell são arquivos de texto que contêm cmdlets e outros comandos do PowerShell salvos com uma extensão .ps1. Eles automatizam sequências mais longas de tarefas e podem ser simples ou complexos.

c) Pipeline:

O PowerShell Pipeline conecta vários cmdlets, passando a saída de um como entrada para o próximo. Esse encadeamento de comandos permite executar operações complexas com o mínimo de código. Por exemplo, você pode listar todos os arquivos em um diretório e filtrá-los por tamanho ou tipo em uma única linha de código.

O PowerShell possui uma vasta gama de comandos (cmdlets) que cobrem diversas funções. Listar todos os comandos, incluindo os avançados, seria muito extenso para uma única resposta. No entanto, você pode obter uma lista completa de comandos disponíveis em seu sistema PowerShell usando alguns cmdlets específicos. Aqui estão alguns comandos que você pode usar para listar todos os cmdlets, funções e aliases disponíveis no PowerShell:

  1. Listar todos os cmdlets, funções e aliases

    Cmdlets:

    Get-Command

  2. Filtrar por tipo específico de comando

    Cmdlets:

    Get-Command -CommandType Cmdlet

    Funções:

    Get-Command -CommandType Function

    Aliases:

    Get-Command -CommandType Alias

  3. Listar cmdlets avançados Cmdlets avançados são geralmente os que requerem mais conhecimento técnico ou estão relacionados a tarefas administrativas complexas. Esses não são classificados de forma explícita como "avançados" no PowerShell, mas você pode identificar alguns dos cmdlets mais avançados e frequentemente usados em contextos administrativos e de automação, por exemplo:

    Cmdlets para gerenciamento de sistema:

    Get-Command -Noun Service

    Get-Command -Noun Process

    Get-Command -Noun EventLog

    Cmdlets para gerenciamento de usuários e grupos:

    Get-Command -Noun User

    Get-Command -Noun Group

    Cmdlets para gerenciamento de arquivos e diretórios:

    Get-Command -Noun File

    Get-Command -Noun Item

  4. Exportar lista completa de comandos para um arquivo Se você deseja exportar todos os comandos para um arquivo para revisão, você pode usar o seguinte comando:

    Get-Command | Out-File -FilePath "C:\caminho\para\seu\arquivo\ComandosPowerShell.txt"

  5. Obter ajuda detalhada para um cmdlet específico

    Para obter ajuda detalhada sobre um cmdlet específico, você pode usar:

    Get-Help NomeDoCmdlet -Detailed

    Exemplos de cmdlets avançados

    Gerenciamento de processos:

    Get-Process

    Start-Process

    Stop-Process

    Manipulação de eventos:

    Get-EventLog

    New-EventLog

    Remove-EventLog

    Gerenciamento de serviços:

    Get-Service

    Start-Service

    Stop-Service

    Essa é apenas uma introdução.

    PowerShell é uma ferramenta poderosa e versátil, e a melhor maneira de se familiarizar com todos os comandos é explorá-los diretamente no console.

Comandos essenciais do PowerShell que você deve conhecer

Existem tantos comandos do Windows PowerShell disponíveis que pode ser um pouco cansativo descobrir por onde começar. Compilamos uma lista abrangente de comandos do PowerShell com alguns dos comandos essenciais que você deve conhecer para tarefas que vão desde a navegação no sistema de arquivos e manipulação de arquivos até administração do sistema e rede.

Navegando no sistema de arquivos

Image showing file system navigation with powershell

Get-ChildItem

lista itens em um diretório.

Set-Location

Altera o diretório atual.

Push-Location

salva o diretório atual em uma pilha para que você possa retornar a ele.

Pop-Location

Retorna ao diretório salvo pelo Push-Location.

Manipulação de arquivos

Image showing file manipulation with powershell

New-Item

Cria um novo arquivo ou diretório.

Remove-Item

Exclui um arquivo ou diretório.

Copy-Item

Copia um arquivo ou diretório para outro local.

Move-Item

Move um arquivo ou diretório para um novo local.

Rename-Item

Renomeia um arquivo ou diretório.

Administração do Sistema

Get-Service

lista todos os serviços em um computador.

Start-Service

Inicia um serviço interrompido.

Stop-Service

interrompe um serviço em execução.

Restart-Service

Reinicia um serviço.

Gerenciamento de usuários e permissões

Get-LocalUser

Recupera contas de usuários locais.

New-LocalUser

Cria uma nova conta de usuário local.

Remove-LocalUser

Exclui uma conta de usuário local.

Get-Acl

Obtém a lista de controle de acesso (ACL) para um arquivo ou recurso.

Set-Acl

Define a ACL para um arquivo ou recurso.

Comandos de rede

Test-Connection

Envia solicitações de eco ICMP para um host de destino para testar a conectividade.

Get-NetIPAddress

Recupera a configuração do endereço IP.

Get-NetAdapter

Lista adaptadores de rede.

Resolve-DnsName

Resolve um nome DNS para um endereço IP.

Gerenciamento de processos

Get-Process

Lista os processos atualmente em execução.

Start-Process

Inicia um novo processo.

Stop-Process

interrompe um processo em execução.

Wait-Process

Aguarda a saída de um processo.

Trabalhando com objetos

Select-Object

Seleciona propriedades específicas de um objeto.

Where-Object

Filtra objetos com base em valores de propriedades.

Sort-Object

Classifica objetos por valores de propriedade.

Group-Object

Agrupa objetos por valores de propriedade.

Comandos e técnicas avançadas do PowerShell

Os scripts do PowerShell ampliam a funcionalidade da linha de comando, permitindo operações mais complexas e poderosas. Aqui estão alguns dos elementos principais.

Estruturas de controle:

são instruções if, else e switch para tomada de decisão e loops (for, for each, while, do-while) para tarefas repetitivas.

Funções:

Funções são blocos de código reutilizáveis ​​que você pode chamar com um nome. Eles ajudam a organizar scripts em seções gerenciáveis ​​e podem aceitar parâmetros para operação dinâmica.

Tratamento de erros:

O PowerShell usa blocos try, catch e finalmente para tratamento de erros. Isso permite que os scripts tratem erros normalmente e continuem a execução ou finalizem corretamente.

Os scripts podem automatizar quase todas as tarefas que podem ser executadas na linha de comando do PowerShell. Scripts complexos podem gerenciar atualizações do sistema, implantar software em redes, automatizar o gerenciamento de arquivos e muito mais.

O segredo é combinar cmdlets, estruturas de controle e funções personalizadas para criar uma sequência de operações executadas sem intervenção manual.

Os módulos expandem os recursos do PowerShell adicionando novos comandos, incluindo cmdlets e funções. Depois de importar um módulo com Import-Module, você pode acessar funcionalidades adicionais para tarefas específicas, como AzureRM para recursos do Azure, ActiveDirectory para serviços de diretório e PSDsc para gerenciamento de configuração.

Os módulos podem ser integrados, baixados da Galeria do PowerShell ou personalizados.

Práticas recomendadas de script do PowerShell

Ao escrever scripts do PowerShell, seguir as práticas recomendadas manterá seu código limpo, legível e utilizável. Aqui estão algumas diretrizes gerais que você deve seguir.

1- Use convenções de nomenclatura claras:

Escolha nomes descritivos para funções e variáveis. Isso torna seu script auto documentado e mais fácil de entender.

2- Mantenha a simplicidade:

Escreva comandos simples e diretos. One-liners complexos podem ser impressionantes, mas difíceis de ler e manter.

3- Modularize seu código:

Divida seu script em funções. Essa abordagem torna seu código reutilizável e mais fácil de testar.

4- Use formatação consistente:

Use recuo, espaçamento e posicionamento de colchetes consistentes. Essa consistência melhora a legibilidade e a manutenção.

5- Evite valores codificados:

Use parâmetros e arquivos de configuração em vez de valores codificados. Isso torna seus scripts mais flexíveis e fáceis de atualizar. Implementar tratamento de erros: use blocos try, catch e, finalmente, blocos para tratar erros. O tratamento adequado de erros evita que seu script falhe silenciosamente e facilita a depuração.

5- Comente seu código:

Os comentários são muito importantes para explicar o propósito do seu código, como ele funciona e por que decisões específicas foram tomadas. Os comentários são valiosos para qualquer pessoa que possa trabalhar em seu roteiro no futuro, incluindo você mesmo no futuro.

6- Documente seu script:

Junto com os comentários in-line, documente no início do seu script sua finalidade, uso, parâmetros e quaisquer dependências. É importante que outras pessoas entendam e usem seu script.

Apoio:

Guia de referências dos comandos do PowerShell

Listamos os comandos do PowerShell mais comuns que você deve conhecer, mas e quanto a um alias para um determinado comando?

E quanto à sua sintaxe?

Com esta folha de dicas, você pode obter tudo o que precisa saber sobre esses comandos essenciais, junto com um exemplo, para referência rápida.

AliasCommandSyntaxExampleDescription
Navigating the File System
Gci, ls, dirGet-ChildItemGet-ChildItem -Path <Path>Get-ChildItem -Path C:\UsersLists items in a specified directory
Cd, chdirSet-LocationSet-Location -Path <Path>Set-Location -Path C:\WindowsChanges the current directory
pushdPush-LocationPush-Location -Path <Path>Push-Location -Path C:\WindowsSaves the current directory on a stack
popdPop-LocationPop-LocationPop-LocationReturns to the directory saved by Push-Location
File Manipulation
niNew-ItemNew-Item -Path <Path> -ItemType FileNew-Item -Path .\file.txt -ItemType FileCreates a new file
del, erase, rd, ri, rm, rmdir, rpRemove-ItemRemove-Item -Path <Path>Remove-Item -Path .\file.txtDeletes a file or directory
copy, cp, cpi, cppCopy-ItemCopy-Item -Path <Path> -Destination <Destination>Copy-Item -Path .\file.txt -Destination .\backup\file.txtCopies a file to a new location
mi, move, mp, mvMove-ItemMove-Item -Path <Path> -Destination <Destination>Move-Item -Path .\file.txt -Destination .\new\file.txtMoves a file to a new location
ren, rni,Rename-ItemRename-Item -Path <Path> -NewName <NewName>Rename-Item -Path .\file.txt -NewName new_file.txtRenames a file
System Administration
gsvGet-ServiceGet-ServiceGet-ServiceWhere-Object {$_.Status -eq “Running”}`
sasvStart-ServiceStart-Service -Name <Name>Start-Service -Name “bits”Starts a stopped service
spsvStop-ServiceStop-Service -Name <Name>Stop-Service -Name “bits”Stops a running service
Restart-ServiceRestart-Service -Name <Name>Restart-Service -Name “bits”Restarts a service
User & Permissions Management
gluGet-LocalUserGet-LocalUserGet-LocalUserSelect-Object Name`
nluNew-LocalUserNew-LocalUser -Name <Name>New-LocalUser -Name “User1”Creates a new local user account
rluRemove-LocalUserRemove-LocalUser -Name <Name>Remove-LocalUser -Name “User1”Deletes a local user account
Get-AclGet-Acl -Path <Path>Get-Acl -Path .\file.txtGets ACL for a file or resource
Set-AclSet-Acl -Path <Path> -AclObject <AclObject>Set-Acl -Path .\file.txt -AclObject $aclSets the ACL for a file or resource
Networking Commands
Test-ConnectionTest-Connection -ComputerName <Name>Test-Connection -ComputerName google.comTests network connectivity
Get-NetIPAddressGet-NetIPAddressGet-NetIPAddress -InterfaceAlias “Ethernet”Retrieves IP address configuration
Get-NetAdapterGet-NetAdapterGet-NetAdapter -Name “Ethernet”Lists network adapters
Resolve-DnsNameResolve-DnsName -Name <Name>Resolve-DnsName -Name google.comResolves a DNS name to an IP address
Process Management
gps, psGet-ProcessGet-ProcessGet-ProcessWhere-Object {$_.CPU -gt 100}`
start, sapsStart-ProcessStart-Process -FilePath <FilePath>Start-Process -FilePath “notepad.exe”Starts a new process
spps, killStop-ProcessStop-Process -Name <Name>Stop-Process -Name “notepad”Stops a running process
Wait-ProcessWait-Process -Name <Name>Wait-Process -Name “notepad”Waits for a process to exit
Working With Objects
selectSelect-ObjectSelect-Object -Property <Property>Get-ProcessSelect-Object Name, CPUSelects specific properties of an object
Where-ObjectWhere-Object {$_.Property -Condition <Value>}Get-ProcessWhere-Object {$_.CPU -gt 100}Filters objects based on property values
sortSort-ObjectSort-Object -Property <Property>Get-ProcessSort-Object CPUSorts objects by property values
groupGroup-ObjectGroup-Object -Property <Property>Get-ProcessGroup-Object ProcessNameGroups objects by property values