Carregando
0x170Lição 24 de 25

PowerShell no trabalho

Usos reais em TI, nuvem e integração contínua: auditorias, runbooks e verificações de build.

24 min Questionário com 3 perguntas 1 exercício de código
Ao final desta lição, você saberá
  • Explique usos operacionais do PowerShell e os módulos necessários
  • Separe auditorias de alterações com a identidade e as permissões corretas
  • Transforme dados de inventário em um relatório de exceções

Um script de produção tem uma fonte, uma decisão e uma saída acionável. A mesma sequência serve para um host Windows, o Microsoft 365 e o Azure.

EquipeTarefaFerramentasEntrega
TIIdentificar serviços com falhaGet-Service, Get-WinEventRelatório para o plantão
IdentidadeRevisar contas desabilitadasConnect-MgGraph, Get-MgUserCSV para revisão de acesso
NuvemInventariar VMs em um runbookConnect-AzAccount -Identity, Get-AzVMInventário diário
EntregaBarrar código com problemasInvoke-ScriptAnalyzer, Invoke-PesterBuild aprovado

Cada ambiente exige módulos e permissões diferentes. Os exercícios usam apenas dados de exemplo, sem acessar contas reais.

Auditoria de identidade no Microsoft 365

O SDK PowerShell do Microsoft Graph fornece Connect-MgGraph e Get-MgUser. Solicite somente a permissão de leitura necessária e selecione as propriedades explicitamente. O login interativo com -Scopes serve para uma pessoa; uma tarefa agendada precisa de identidade de aplicativo e permissões aprovadas.

m365-access-review.ps1 (requires Microsoft.Graph.Users and tenant access)
1Connect-MgGraph -Scopes 'User.Read.All'
2Get-MgUser -All -Property DisplayName,UserPrincipalName,AccountEnabled |
3  Where-Object AccountEnabled -eq $false |
4  Select-Object DisplayName, UserPrincipalName, AccountEnabled |
5  Export-Csv -LiteralPath './disabled-users.csv' -NoTypeInformation

Runbook do Azure e verificação de CI

No Azure Automation, Connect-AzAccount -Identity usa a identidade gerenciada do runbook. Ela também precisa de uma função nos recursos consultados. Em produção, escolha explicitamente a assinatura ou o contexto esperado.

vm-inventory.ps1 (runs in Azure Automation with Az modules)
1$null = Disable-AzContextAutosave -Scope Process
2$context = (Connect-AzAccount -Identity).Context
3Get-AzVM -Status -DefaultProfile $context |
4  Select-Object Name, ResourceGroupName, Location, PowerState

O GitHub Actions aceita shell: pwsh. O executor precisa ter os módulos instalados. A verificação deve falhar quando o analisador encontrar problemas ou quando testes Pester falharem; a publicação vem depois.

ci-check.ps1 (requires PSScriptAnalyzer and Pester)
1$findings = @(Invoke-ScriptAnalyzer -Path './scripts' -Recurse)
2if ($findings.Count) {
3  $findings | Format-Table
4  throw "PSScriptAnalyzer found $($findings.Count) issue(s)"
5}
6$tests = Invoke-Pester -Path './tests' -PassThru
7if ($tests.FailedCount) { throw "$($tests.FailedCount) test(s) failed" }

Fontes: autenticação do Graph, Get-MgUser, runbook com identidade gerenciada, GitHub Actions e PSScriptAnalyzer. Explore os exemplos reais com módulos e acesso apropriados; o laboratório é independente.

Principais conclusões

  • Scripts operacionais leem objetos, selecionam exceções e produzem relatórios ou sinais de build.

  • Graph e Az exigem módulos, identidade e permissões adequadas.

  • Comece com relatório somente de leitura; revise, visualize e teste alterações antes de executá-las.

  • O CI pode executar pwsh, PSScriptAnalyzer e Pester antes da publicação.

Quiz da aula

3 perguntas · aprovação com 3 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva código em scripts PowerShell

Escreva um script no editor e execute-o de verdade com entradas de exemplo, que chegam ao script como $input. Os scripts rodam no PowerShell 6.2 pelo Try It Online (tio.run), um serviço público gratuito, então estes exercícios evitam sintaxe exclusiva do PowerShell 7; seu script e a entrada de teste são enviados para lá.

Exercício 1

Relatório de exceções de acesso

+25 XP

Leia linhas CSV de exemplo com Name,UserPrincipalName,AccountEnabled,Department. Mantenha as contas em que AccountEnabled é False e imprima Department: Name <UserPrincipalName> em ordem de departamento e nome. Termine com disabled accounts: <n>.

Este exercício simula uma consulta somente de leitura ao Graph. Use ConvertFrom-Csv, Where-Object e Sort-Object; não é preciso acessar um tenant.

  • Departamentos variados
  • Nenhuma exceção
script.ps1
Carregando editor…

As aulas ensinam PowerShell 7; seu script roda no PowerShell 6.2 pelo Try It Online (tio.run), um serviço público gratuito, então use uma sintaxe que funcione lá. A entrada de teste chega ao script como $input. Seu script e a entrada de teste são enviados a esse serviço.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…