PowerShell no trabalho
Usos reais em TI, nuvem e integração contínua: auditorias, runbooks e verificações de build.
- 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.
| Equipe | Tarefa | Ferramentas | Entrega |
|---|---|---|---|
| TI | Identificar serviços com falha | Get-Service, Get-WinEvent | Relatório para o plantão |
| Identidade | Revisar contas desabilitadas | Connect-MgGraph, Get-MgUser | CSV para revisão de acesso |
| Nuvem | Inventariar VMs em um runbook | Connect-AzAccount -Identity, Get-AzVM | Inventário diário |
| Entrega | Barrar código com problemas | Invoke-ScriptAnalyzer, Invoke-Pester | Build 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.
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' -NoTypeInformationRunbook 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.
1$null = Disable-AzContextAutosave -Scope Process
2$context = (Connect-AzAccount -Identity).Context
3Get-AzVM -Status -DefaultProfile $context |
4 Select-Object Name, ResourceGroupName, Location, PowerStateO 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.
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á.
Relatório de exceções de acesso
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
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…