Tema: powershell
-
Tratamento de erros em PowerShell para scripts de administração: erros terminantes, $ErrorActionPreference e $LASTEXITCODE
O PowerShell tem duas classes de erro com comportamentos distintos num script: erros terminantes, que o try/catch consegue interromper, e erros não terminantes, que só $ErrorActionPreference ou -ErrorAction podem transformar em interrupção. Uma terceira classe, as falhas de executáveis nativos, não segue nenhum desses caminhos, a menos que $PSNativeCommandUseErrorActionPreference esteja definido (PowerShell 7.4+, experimental na 7.3).
-
Windows PowerShell 5.1 e PowerShell 7 em servidores: sob qual deles um script realmente executa
O PowerShell 7 é instalado lado a lado com o Windows PowerShell 5.1 integrado, sem substituí-lo, com outro executável, outro caminho de módulos e outro endpoint de remoting. Um agente que executa 'powershell.exe' quando queria 'pwsh.exe' (ou o contrário) acaba, sem aviso, com o conjunto de módulos e os padrões do outro motor.
-
Preparar um disco novo no Windows Server: de Get-Disk a Format-Volume, e por que ele começa offline
A sequência do módulo Storage do PowerShell, de Get-Disk até um volume formatado e montado: Initialize-Disk -PartitionStyle GPT, New-Partition -UseMaximumSize, Format-Volume e, depois, o redimensionamento com Get-PartitionSupportedSize. Explica também a política de SAN que deixa certos discos recém-conectados offline por padrão.
-
Habilitar e usar o PowerShell remoting: WinRM, TrustedHosts e o limite do segundo salto
Como ativar o PowerShell remoting com Enable-PSRemoting, escolher entre TrustedHosts e transporte HTTPS, executar comandos com Invoke-Command e Enter-PSSession, e entender a limitação de delegação de credenciais conhecida como segundo salto.
-
Amostragem de contadores de desempenho do Windows Server com Get-Counter e exportação para CSV
O Get-Counter coleta amostras de caminhos de contadores nomeados em um intervalo definido, de forma contínua ou por um número fixo de amostras; o Export-Counter (somente no Windows PowerShell 5.1) preserva todos os campos no formato nativo BLG, e o relog converte uma captura para CSV depois, mesmo sem o comando Export-Counter original.
-
Dry-run e confirmação em scripts de administração: -WhatIf/-Confirm no PowerShell e uma flag --dry-run no shell
O PowerShell tem um mecanismo nativo, o SupportsShouldProcess, que dá a uma função própria os switches -WhatIf e -Confirm reais, ligados à mesma chamada $PSCmdlet.ShouldProcess() usada pelos cmdlets internos. Scripts de shell não têm um equivalente nativo, por isso uma flag --dry-run precisa ser propagada manualmente.
-
Como escrever scripts de administração idempotentes: verificar antes de alterar, arquivos drop-in e comentários marcadores
Um script de administração que um agente pode reexecutar após uma falha parcial ou por agendamento repetido deve deixar o sistema no mesmo estado, rodando uma ou cinco vezes. Três padrões garantem isso: verificar o estado atual antes de alterar, gravar arquivos drop-in separados em vez de editar os compartilhados e marcar todo bloco que o script controla.
-
Instalar funções e recursos do Windows Server via PowerShell sem acumular reinicializações pendentes
Get-WindowsFeature e Install-WindowsFeature -IncludeManagementTools cobrem a descoberta e a instalação; -Source aponta para a mídia de Features on Demand quando o repositório de componentes local não tem os arquivos, e o objeto retornado informa se ainda é preciso reiniciar.
-
Gerenciar usuários e grupos do Active Directory pelo PowerShell sem varrer o diretório inteiro
Get-ADUser com -Filter e -Properties, New-ADUser com senha SecureString, Add-ADGroupMember e Search-ADAccount/Unlock-ADAccount para bloqueios de conta — e por que -Filter * é uma armadilha em um diretório com dezenas de milhares de objetos.
-
Executar um comando como outro usuário a partir de um script: sudo -u, runuser, su -c e o -Credential do PowerShell
sudo -u, runuser e su -c executam um comando com outro ID de usuário e de grupo, mas diferem quanto à necessidade da senha do usuário de destino, ao carregamento de um ambiente de login e a quem pode invocá-los; o Start-Process e os cmdlets de remoting do PowerShell recebem um objeto -Credential, e nenhuma dessas ferramentas deve receber senha por pipe ou argumento de linha de comando.
-
Criação de armazenamento resiliente em um servidor standalone com Storage Spaces e substituição de um disco com falha
New-StoragePool para agrupar discos físicos, New-VirtualDisk com resiliência Mirror ou Parity, monitoramento da integridade com Get-PhysicalDisk e Get-StorageJob, e a sequência documentada para trocar um disco com falha sem perder o pool.
-
Administrar zonas e registros do DNS Server com PowerShell e verificar com Resolve-DnsName
Como usar Get-DnsServerZone, adicionar registros A e CNAME, listá-los com Get-DnsServerResourceRecord, configurar scavenging/aging para expirar registros obsoletos e limpar o cache do resolvedor, conferindo cada escrita pelo lado do cliente e não apenas pela visão do servidor.
-
Noções básicas de administração do IIS com PowerShell: sites, pools de aplicativos, logs e backup da configuração
Como listar sites com `Get-IISSite`, do módulo IISAdministration, reciclar um pool de aplicativos, saber onde o IIS grava os logs por padrão e usar `appcmd add backup` para fazer um snapshot do `applicationHost.config` antes de alterar a configuração.
-
Fins de linha, codificações e caminhos: o que quebra quando um arquivo muda de sistema operacional
CRLF versus LF, os padrões de codificação inconsistentes do Windows PowerShell 5.1 frente ao UTF-8 sem BOM do PowerShell 7, EBCDIC em sistemas da família de mainframes IBM e sistemas de arquivos que divergem quanto à diferenciação de maiúsculas e minúsculas e ao tamanho máximo de caminho: uma lista de verificação antes de assumir que um arquivo de texto ou um caminho se comporta da mesma forma em outro SO.
-
Hyper-V no PowerShell: máquinas virtuais, checkpoints e por que um checkpoint não é um backup
Get-VM e a estrutura de uma chamada New-VM, a diferença entre checkpoints Standard e Production, Export-VM para mover uma VM, serviços de integração e a opção -ExposeVirtualizationExtensions, que ativa a virtualização aninhada.
-
Como impedir execuções simultâneas de um script administrativo: flock, lockf e mutex nomeado no Windows
Um script administrativo agendado ou disparado por um agente, que pode ser iniciado de novo antes de a execução anterior terminar, precisa de um lock e não de esperar que isso nunca aconteça. O flock(1) no Linux e o lockf(1) no FreeBSD associam um lock consultivo (advisory) do kernel a um processo em execução, por isso ele não fica obsoleto como um arquivo PID esquecido; no Windows, o equivalente é um System.Threading.Mutex nomeado.
-
Gerenciar a função de servidor DHCP com PowerShell: escopos, reservas, autorização e backup
Como consultar escopos e concessões com Get-DhcpServerv4Scope, reservar um endereço com Add-DhcpServerv4Reservation, autorizar um servidor no AD com Add-DhcpServerInDC, uma visão geral do failover e como fazer backup da configuração com Backup-DhcpServer antes de uma alteração arriscada.
-
Comparação de elevação de privilégios: sudo, doas, UAC, runas e RBAC do AIX — e como detectá-la
sudo, doas, o UAC do Windows e o grupo admin do macOS respondem à mesma pergunta — esta sessão pode agir como administrador? — com mecanismos distintos e formas diferentes de um script verificar a resposta antes de tentar uma ação privilegiada.
-
Verificar a saúde do Active Directory antes de qualquer alteração: dcdiag, repadmin e os detentores das funções FSMO
Rotina de verificação de saúde de um controlador de domínio antes de alterações: dcdiag para diagnóstico local, repadmin /replsummary e /showrepl para replicação, Get-ADDomainController e netdom query fsmo para o inventário de controladores e detentores de funções, e por que a fonte de tempo do emulador de PDC importa.
-
Criar uma tarefa agendada com o módulo ScheduledTasks: ação, gatilho, principal e códigos de resultado
New-ScheduledTaskAction, -Trigger e -Principal combinam-se em uma tarefa registrada com Register-ScheduledTask; executar como NT AUTHORITY\SYSTEM dispensa senha armazenada, e Get-ScheduledTaskInfo, junto com as constantes de resultado documentadas do Agendador de Tarefas, indica a um agente se a última execução foi realmente bem-sucedida.
Legível por máquina: JSON