4. Administração de Sistemas com PowerShell
O PowerShell é uma ferramenta poderosa para a administração de sistemas, proporcionando aos administradores uma maneira eficiente e flexível de gerenciar e automatizar uma vasta gama de tarefas de administração de sistemas. Abaixo, exploramos os principais tópicos e comandos que capacitam os administradores a gerenciar sistemas Windows e ambientes multiplataforma com PowerShell.
4.1. Gerenciamento de Usuários e Grupos
Criação, Modificação e Exclusão de Usuários
- Criar Novo Usuário: O cmdlet New-LocalUser é usado para criar novos usuários locais em uma máquina Windows.
New-LocalUser -Name \"NovoUsuario\" -Password (ConvertTo-SecureString \"SenhaSegura123\" -AsPlainText -Force) -FullName \"Nome Completo\" -Description \"Descrição do Usuário\"
Modificar Usuário: Para modificar as propriedades de um usuário, você pode usar o cmdlet Set-LocalUser.
Set-LocalUser -Name \"NovoUsuario\" -FullName \"Nome Completo Atualizado\" -Description \"Descrição Atualizada\"
Excluir Usuário: Para excluir um usuário, utilize o cmdlet Remove-LocalUser.
Remove-LocalUser -Name \"NovoUsuario\"
Gerenciamento de Grupos
- Criar Novo Grupo: Use New-LocalGroup para criar grupos locais.
New-LocalGroup -Name \"NovoGrupo\" -Description \"Descrição do Grupo\"
- Adicionar Usuário a um Grupo: O cmdlet Add-LocalGroupMember adiciona um usuário a um grupo específico.
Add-LocalGroupMember -Group \"Administradores\" -Member \"NovoUsuario\"
- Remover Usuário de um Grupo: Para remover um usuário de um grupo, use Remove-LocalGroupMember.
Remove-LocalGroupMember -Group \"Administradores\" -Member \"NovoUsuario\"
- Excluir Grupo: Para excluir um grupo, use Remove-LocalGroup.
Remove-LocalGroup -Name \"NovoGrupo\"
4.2. Gerenciamento de Processos e Serviços
Gerenciamento de Processos
- Listar Processos: Use Get-Process para listar todos os processos em execução.
Get-Process
- Finalizar Processos: Para finalizar um processo específico, use Stop-Process.
Stop-Process -Name \"notepad\"
- Iniciar Novos Processos: Inicie um novo processo com Start-Process.
Start-Process \"notepad.exe\"
Gerenciamento de Serviços
- Listar Serviços: Para listar todos os serviços no sistema, use Get-Service.
Get-Service
Iniciar, Parar e Reiniciar Serviços:
- Iniciar um serviço:
Start-Service -Name \"NomeDoServico\"
- Parar um serviço:
Stop-Service -Name \"NomeDoServico\"
- Reiniciar um serviço:
Restart-Service -Name \"NomeDoServico\"
Alterar o Tipo de Inicialização de um Serviço: Para alterar o tipo de inicialização de um serviço (Manual, Automático, Desativado), use o cmdlet Set-Service.
Set-Service -Name \"NomeDoServico\" -StartupType Automatic
4.3. Gerenciamento de Discos e Sistema de Arquivos
Gerenciamento de Discos
- Listar Informações sobre Discos: Use o cmdlet Get-PhysicalDisk para obter informações sobre os discos físicos.
Get-PhysicalDisk
- Gerenciamento de Volumes e Partições: Use Get-Volume para listar todos os volumes e Get-Partition para listar as partições.
Get-Volume
Get-Partition
- Formatar Volume: Para formatar um volume, use Format-Volume.
Format-Volume -DriveLetter D -FileSystem NTFS -Confirm:\$false
Gerenciamento de Sistema de Arquivos
-
Gerenciamento de Permissões (ACLs): As listas de controle de acesso (ACLs) podem ser gerenciadas com os cmdlets Get-Acl, Set-Acl, e New-Object (para criar regras).
-
Exibir ACLs: (Ampliar este conteúdo com os detalhes do comando)
Get-Acl -Path \"C:\windows\"
- Modificar ACLs:
\$acl = Get-Acl -Path \"C:\PastaExemplo\"
\$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(\"Usuario\", \"FullControl\", \"Allow\")
\$acl.SetAccessRule(\$rule)
Set-Acl -Path \"C:\PastaExemplo\" -AclObject \$acl
- Compactar e Descompactar Arquivos: Para compactar arquivos em um arquivo ZIP, use Compress-Archive, e para descompactar, use Expand-Archive.
Compress-Archive -Path \"C:\Pasta\*.*\" -DestinationPath \"C:\Backup\Arquivo.zip\"
Expand-Archive -Path \"C:\Backup\Arquivo.zip\" -DestinationPath C:\PastaRestaurada\"
4.4. Gerenciamento de Rede
Configuração de Rede
- Obter Informações de Rede: Use Get-NetIPAddress para obter informações sobre os endereços IP configurados no sistema.
Get-NetIPAddress
- Configurar Endereço IP Estático: Use New-NetIPAddress para configurar um endereço IP estático.
New-NetIPAddress -InterfaceAlias \"Ethernet\" -IPAddress \"192.168.1.100\" -PrefixLength 24 -DefaultGateway \"192.168.1.1\"
- Configurar DNS: Para configurar servidores DNS, use Set-DnsClientServerAddress.
Set-DnsClientServerAddress -InterfaceAlias \"Ethernet\" -ServerAddresses (\"8.8.8.8\", \"8.8.4.4\")
Testes de Conectividade e Diagnóstico
- Ping e Testes de Conectividade: Use Test-Connection para verificar a conectividade com outro dispositivo na rede.
Test-Connection -ComputerName \"www.google.com\" -Count 4
- Monitoramento de Conexões de Rede: Use Get-NetTCPConnection para monitorar as conexões TCP ativas.
Get-NetTCPConnection
4.5. Gerenciamento de Políticas de Grupo e Segurança Políticas de Grupo (GPO)
- Obter Configurações de Políticas de Grupo: Para listar as configurações aplicadas por GPOs, use Get-GPResultantSetOfPolicy.
Get-GPResultantSetOfPolicy -Computer \"NomeDoComputador\" -ReportType Html -Path \"C:\Relatorios\GPO-Relatorio.html\"
Aplicar Configurações de Políticas de Grupo: Use gpupdate para forçar a aplicação das políticas de grupo.
gpupdate /force
Gerenciamento de Políticas de Segurança
- Configuração de Políticas de Segurança: Use Set-ExecutionPolicy para configurar a política de execução de scripts no PowerShell.
Set-ExecutionPolicy RemoteSigned
- Monitoramento de Eventos de Segurança: Use Get-EventLog para monitorar logs de eventos de segurança.
Get-EventLog -LogName Security -Newest 50 #Deve ser executado no terminal do PowerShell como Administrador!
4.6. Automação de Tarefas e Agendamento
Agendamento de Tarefas
- Criar uma Tarefa Agendada: Use New-ScheduledTask e Register-ScheduledTask para criar e registrar uma tarefa agendada.
\$action = New-ScheduledTaskAction -Execute \"PowerShell.exe\" -Argument \"-File C:\Scripts\Backup.ps1\"
\$trigger = New-ScheduledTaskTrigger -Daily -At \"03:00AM\"
Register-ScheduledTask -Action \$action -Trigger \$trigger -TaskName \"BackupDiario\" -Description \"Backup diário do sistema\"
Gerenciar Tarefas Agendadas: Use Get-ScheduledTask, Set-ScheduledTask e Unregister-ScheduledTask para gerenciar tarefas existentes.
Get-ScheduledTask -TaskName \"BackupDiario\"
Automação com Scripts
- Automatizar Backups: Crie scripts que automatizem o backup de dados importantes, executando-os regularmente através de tarefas agendadas.
# Script de backup
Copy-Item -Path \"C:\DadosImportantes\" -Destination \"D:\Backups\\$(Get-Date -Format yyyyMMdd)\" -Recurse
- Monitoramento Automático: Configure scripts que monitorem serviços críticos e enviem alertas em caso de falha.
# Script de monitoramento
if (-not (Get-Service -Name \"NomeDoServico\" -ErrorAction SilentlyContinue).Status -eq \'Running\') {
Send-MailMessage -To \"admin@example.com\" -From \"monitor@example.com\" -Subject \"Serviço Parado\" -Body \"O serviço NomeDoServico parou.\" -SmtpServer \"smtp.example.com\"
}