PowerShell 4 min de leitura

PowerShell 7.7 em disponibilidade geral: valide a tarefa antes de atualizar o servidor

Nesta página
  1. Reveja primeiro os contratos dos scripts
  2. Mantenha os controlos de segurança no piloto
  3. Escolha o pacote e o ciclo de suporte conscientemente
  4. Torne a evidência da implementação reproduzível

Uma atualização da automação está pronta quando a tarefa continua a produzir o resultado esperado pelos sistemas que o consomem, com a identidade e o ambiente de execução previstos. Iniciar uma nova shell com sucesso responde apenas à primeira questão.

A Microsoft anunciou a disponibilidade geral do PowerShell 7.7 a 10 de novembro. A versão utiliza .NET 11 e tem suporte Standard Term Support (STS). Inclui melhorias nos comandos, reforço da segurança e alterações que podem afetar scripts existentes. A abordagem proposta é testar primeiro as tarefas cujos resultados, tratamento de erros ou pacotes de implementação dependem dessas alterações, antes de atualizar um servidor de automação partilhado.

Etapas de validação propostas para o PowerShell 7.7: identificar o runtime, comparar os contratos dos scripts, testar com a identidade prevista e manter uma via de recuperação.

Reveja primeiro os contratos dos scripts

O anúncio altera o resultado predefinido de New-Guid: passa de UUIDs de versão 4 para UUIDs de versão 7, ordenáveis por tempo. O formato textual continua familiar, pelo que verificar apenas se o identificador parece um GUID não deteta a alteração semântica. Reveja os validadores, os sistemas de armazenamento que o consomem e os pressupostos sobre a geração de identificadores. A Microsoft indica [guid]::NewGuid() como opção para GUIDs de versão 4; nenhuma das versões deve substituir um gerador especificamente concebido para segredos.

A formatação e o tratamento de erros também merecem atenção. Format-Table, Format-List e Format-Custom rejeitam valores nulos ou vazios em -Property. A versão altera a validação de argumentos nulos ou vazios para lançar System.ArgumentException. Um wrapper que captura um tipo de exceção anterior específico pode, por isso, precisar de revisão, mesmo que o percurso sem erros continue a funcionar.

Os valores explicitamente falsos nos switches afetados passam a ser respeitados, incluindo os switches de operadores de Where-Object. Teste entradas verdadeiras e falsas nos wrappers que passam switches a outros comandos. Um teste que abrange apenas o caso habitual de sucesso não demonstra que a lógica de filtragem continua correta.

Nas tarefas que produzem CSV, reveja a combinação agora inválida de Export-Csv -Append com -NoHeader e o aviso de descontinuação de -NoTypeInformation. Verifique o ficheiro resultante e o processo que o lê, incluindo se os avisos são tratados como falha da tarefa. São alterações documentadas da versão, e não falhas observadas num ambiente de cliente.

Mantenha os controlos de segurança no piloto

A versão também altera comportamentos relacionados com linguagem restrita, remoting, extração de ajuda e referências de esquemas JSON. Por exemplo, Test-Json exige a opção explícita -FetchExternalReference para resolver referências externas de esquemas. Confirme se uma tarefa de validação depende dessas referências e reveja as localizações e a respetiva confiança antes de ativar esse comportamento.

A orientação da Microsoft sobre modos de linguagem explica a relação entre Constrained Language Mode e o controlo de aplicações. Uma sessão restringida manualmente não demonstra que a fronteira de controlo de aplicações da produção foi reproduzida. Teste com as políticas e a identidade previstas; não as enfraqueça apenas para obter um resultado positivo no piloto.

As novas facilidades podem esperar até esta base estar compreendida. New-TemporaryDirectory reduz o trabalho necessário para criar um diretório temporário com nome único, enquanto Join-Path -Extension acrescenta outra forma de construir caminhos. Uma tarefa que adota um novo comando passa também a ter um requisito mínimo de runtime. Mantenha explícitas as expectativas de implementação e compatibilidade.

Escolha o pacote e o ciclo de suporte conscientemente

Os ficheiros da versão 7.7.0 estão disponíveis, mas a documentação ainda está a ser atualizada. Na altura desta revisão, a página de novidades ainda descrevia uma pré-visualização e a página do ciclo de suporte ainda apresentava o 7.7 como pré-visualização, sem datas finais de suporte. O anúncio de disponibilidade geral estabelece o estado da versão; essas indicações desatualizadas não devem servir para inventar uma data de fim de suporte STS ou um inventário final das versões dos módulos.

No Windows, os pacotes exigem atenção especial. A orientação de instalação atual indica que o 7.7.0 não tem pacote MSI, e os ficheiros da versão incluem pacotes MSIX e ZIP. Trata-se de uma alteração dos pacotes do 7.7, e não de uma afirmação de que os MSI desapareceram de todas as versões do PowerShell 7. Verifique as limitações do método escolhido para tarefas não assistidas, remoting e sistema operativo do servidor antes de substituir um procedimento de implementação existente.

O PowerShell utiliza a licença MIT. O orçamento prático corresponde ao tempo de engenharia e à infraestrutura necessários para validar; o suporte pago e eventuais recursos Azure usados num piloto são considerações separadas. Este artigo não recomenda uma implementação com custos nem promete melhorias de desempenho ou redução de custos operacionais.

Torne a evidência da implementação reproduzível

Numa tarefa agendada hipotética que exporta um ficheiro de inventário, compare o runtime existente com o 7.7 usando entradas representativas. Conserve o resultado, os avisos, o comportamento de saída e o resultado do processo que lê o ficheiro. Inclua uma entrada vazia e outra inválida e execute depois com a identidade de serviço e as políticas previstas.

EtapaEvidência a conservar
RuntimeExecutável, versão, arquitetura, módulos e método de instalação exatos.
ContratoComportamento esperado dos resultados e erros, incluindo pressupostos sobre GUIDs, filtros e CSV.
AmbienteIdentidade, permissões, modo de linguagem, remoting e dependências externas relevantes.
RecuperaçãoArtefacto de implementação anterior, procedimento de reposição e critérios para parar a implementação.

Este é um plano de validação proposto, e não um relatório de testes executados no PowerShell 7.7. Fixe o runtime candidato no piloto, confirme o pacote e a informação de suporte da sua plataforma e alargue a implementação apenas quando o responsável da tarefa conseguir explicar a evidência. A versão traz melhorias úteis; a adoção deve manter compreensíveis o comportamento da automação e a sua via de recuperação.

Marcos Nogueira
LinkedIn

Pesquisar