Sabia como manter seu parque windows atualizado com custo ZERO

O winget é uma ferramenta de gerenciamento de pacotes da Microsoft que automatiza a instalação, atualização e desinstalação de softwares no Windows. Ele facilita o gerenciamento de aplicativos via linha de comando, centralizando e simplificando a manutenção do sistema.

O winget, também conhecido como Windows Package Manager, é uma ferramenta de gerenciamento de pacotes da Microsoft, lançada oficialmente em 2020, que facilita a instalação, atualização e gerenciamento de aplicativos no Windows. Ele funciona de maneira semelhante a gerenciadores de pacotes em outros sistemas operacionais, como o apt no Linux ou o brew no macOS. A ideia principal é automatizar a instalação de softwares e manter o sistema atualizado com o mínimo de esforço.

Principais Funcionalidades do winget:

  1. Instalação de Pacotes: O winget permite instalar softwares diretamente de repositórios online. Por exemplo, para instalar o Google Chrome, basta executar:
   winget install Google.Chrome

O winget busca o pacote no repositório oficial e executa a instalação automaticamente, sem necessidade de downloads manuais ou de navegar por instaladores gráficos.

  1. Atualização de Pacotes: O comando winget upgrade lista todos os pacotes que têm uma versão mais recente disponível. Você pode então atualizar pacotes específicos ou todos de uma vez:
   winget upgrade --all
  1. Desinstalação de Pacotes: Assim como na instalação, o winget também permite desinstalar aplicativos de forma rápida e direta:
   winget uninstall <nome-do-aplicativo>
  1. Pesquisa de Pacotes: Se você não tem certeza do nome exato de um software, pode pesquisá-lo no repositório de pacotes:
   winget search <nome-parcial-do-aplicativo>
  1. Gerenciamento de Repositórios: Por padrão, o winget usa o repositório da Microsoft, mas também suporta múltiplos repositórios, permitindo que empresas e desenvolvedores adicionem seus próprios repositórios privados.

Arquitetura

O winget funciona com base em manifestos, que são arquivos contendo informações sobre os pacotes (nome, versão, URL, etc.). Esses manifestos são armazenados em repositórios públicos ou privados, que o winget utiliza para buscar os pacotes. A Microsoft mantém um repositório público de manifestos no GitHub, onde desenvolvedores podem enviar seus próprios manifestos para disponibilizar seus aplicativos através do winget.

Vantagens do winget:

  • Automatização: O winget automatiza o processo de instalação e atualização de aplicativos, eliminando a necessidade de baixar e executar instaladores manualmente.
  • Centralização: Com o winget, você pode gerenciar todos os seus aplicativos a partir de uma única ferramenta, o que simplifica a manutenção e a organização do sistema.
  • Integração com o Sistema: Como é uma ferramenta oficial da Microsoft, ele é bem integrado ao Windows, tornando-o seguro e confiável para automação e gerenciamento de software em ambientes corporativos.

Comandos Principais:

  • winget install <pacote>: Instala um software.
  • winget upgrade <pacote>: Atualiza um software específico.
  • winget upgrade --all: Atualiza todos os softwares instalados que possuem uma nova versão disponível.
  • winget list: Lista todos os pacotes instalados no sistema.
  • winget uninstall <pacote>: Remove um software.
  • winget search <termo>: Pesquisa pacotes disponíveis.
  • winget source: Gerencia os repositórios de pacotes.

Comparação com Outros Gerenciadores de Pacotes

Enquanto no Linux os gerenciadores de pacotes são essenciais para o funcionamento do sistema (como apt, yum, e dnf), no Windows, o conceito de gerenciador de pacotes é relativamente novo. Até o lançamento do winget, os usuários do Windows geralmente precisavam baixar instaladores manualmente e seguir os passos de instalação gráficos. Com o winget, a Microsoft deu um grande passo em direção à automação e à praticidade, semelhante ao que o brew faz no macOS.

Futuro e Perspectivas

O winget ainda está em desenvolvimento ativo e novas funcionalidades estão sendo constantemente adicionadas. A comunidade de desenvolvedores também participa ativamente enviando manifestos para novos pacotes no repositório oficial. Essa ferramenta deve se tornar cada vez mais essencial para profissionais de TI que buscam automação em ambientes Windows, especialmente em grandes redes corporativas.

AGORA VAMOS AO QUE INTERESSA!

Para gerenciar atualizações de software remotamente em dispositivos Windows utilizando o winget, você precisará configurar um ambiente que permita a execução de comandos remotos. Existem várias abordagens para isso, como o uso do PowerShell Remoting, que é ideal para este tipo de tarefa em um ambiente Windows.

Pré-requisitos:

  1. Windows 10 ou superior: Certifique-se de que os dispositivos que você vai gerenciar estejam rodando uma versão do Windows que suporte o winget.
  2. PowerShell 7 ou superior: Recomendado para garantir suporte completo a funcionalidades modernas do PowerShell.
  3. winget instalado: O winget deve estar instalado nos dispositivos. Em sistemas mais recentes, ele já vem por padrão. Caso não esteja, pode ser instalado via Microsoft Store.

Passo a Passo para Configurar e Utilizar o winget Remotamente

1. Habilitar o PowerShell Remoting no Computador de Origem e Destino

Para se conectar remotamente aos dispositivos, você precisa habilitar o PowerShell Remoting. Isso pode ser feito utilizando o comando Enable-PSRemoting.

Enable-PSRemoting -Force

Este comando deve ser executado tanto no computador de origem (de onde você vai controlar remotamente) quanto nos dispositivos de destino.

Nota: Este comando habilita o serviço de escuta do PowerShell Remoting, configura regras de firewall e permite a execução de scripts remotos.

2. Configurar o TrustedHosts (opcional)

Se os dispositivos de origem e destino não estiverem no mesmo domínio, pode ser necessário configurar os dispositivos de destino como TrustedHosts.

Execute o seguinte comando no computador de origem:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "Endereço-IP-do-Destino"

Nota: Substitua "Endereço-IP-do-Destino" pelo IP do dispositivo remoto ou utilize "*" para confiar em todos os hosts, embora isso seja menos seguro.

3. Testar a Conexão Remota com o PowerShell Remoting

Testar a conexão remota pode ser feito com o seguinte comando:

Test-WSMan -ComputerName "Endereço-IP-do-Destino"

Se o teste for bem-sucedido, você está pronto para iniciar o processo de gerenciamento remoto.

4. Executar o Winget Remotamente para Coletar Informações sobre Atualizações Pendentes

Agora que o PowerShell Remoting está habilitado e configurado, você pode iniciar uma sessão remota e executar comandos winget.

Abra uma sessão remota para o dispositivo de destino:

Enter-PSSession -ComputerName "Endereço-IP-do-Destino" -Credential (Get-Credential)

Uma vez dentro da sessão remota, execute o comando para listar as atualizações pendentes:

winget upgrade

Isso listará todos os pacotes que têm atualizações disponíveis.

5. Executar as Atualizações Remotamente

Para executar as atualizações dos pacotes listados, você pode usar o seguinte comando:

winget upgrade --all

Esse comando atualiza automaticamente todos os pacotes que possuem versões mais recentes disponíveis.

6. Automatizar com Scripts

Você pode criar um script em PowerShell para automatizar todo o processo de verificação e atualização dos pacotes. Aqui está um exemplo simples:

$computers = @("PC1", "PC2", "PC3")  # Substitua pelos IPs ou nomes dos PCs

foreach ($computer in $computers) {
    Invoke-Command -ComputerName $computer -ScriptBlock {
        # Verifica e atualiza os pacotes pendentes
        winget upgrade --all
    } -Credential (Get-Credential)
}

Este script conecta-se aos computadores listados na variável $computers, verifica as atualizações e executa-as automaticamente.

Considerações de Segurança

  • Credenciais Seguras: Sempre utilize métodos seguros para armazenar e transmitir credenciais. O uso de Get-Credential garante que as credenciais não sejam armazenadas em texto plano no script.
  • Firewall e Políticas de Rede: Certifique-se de que as regras de firewall e as políticas de rede permitem conexões remotas via PowerShell Remoting.

Conclusão

Gerenciar atualizações de software remotamente com o winget via PowerShell Remoting pode simplificar significativamente a manutenção de múltiplos dispositivos. O processo envolve habilitar o PowerShell Remoting, configurar hosts confiáveis (se necessário), e usar scripts para automatizar a execução do winget.