Como Desbloquear Arquivos Baixados em Lote com PowerShell no Windows 11
🔍 WiseChecker

Como Desbloquear Arquivos Baixados em Lote com PowerShell no Windows 11

Solução rápida: Execute Get-ChildItem -Path C:\Downloads -Recurse | Unblock-File em um PowerShell elevado para remover o flag “baixado da Internet” (stream Zone.Identifier) de todos os arquivos em uma pasta de uma só vez. Isso elimina o aviso “Este arquivo veio de outro computador” sem desabilitar o SmartScreen.

O Windows 11 marca todo arquivo baixado pelo navegador, cliente de email ou gerenciador de downloads com um fluxo de dados alternativo (ADS) chamado Zone.Identifier. Ao tentar abrir um desses arquivos, o Windows verifica o fluxo e exibe um aviso de segurança ou, pior, simplesmente se recusa a executar scripts. Para um único arquivo, a caixa de seleção Propriedades → Desbloquear no menu de contexto é suficiente. Para uma pasta com centenas de arquivos (um arquivo de scripts, um repositório de código recente de um colega), é necessário desbloqueá-los em lote.

Sintoma: Vários arquivos baixados exibem o aviso “Este arquivo veio de outro computador” ou estão bloqueados para execução.
Afeta: Windows 11 com comportamento padrão do SmartScreen / Marca da Web.
Tempo de correção: 2 minutos.

ADVERTISEMENT

O que o fluxo Zone.Identifier faz

Quando um navegador salva um arquivo da Internet, ele escreve um fluxo de dados alternativo chamado Zone.Identifier junto com o arquivo principal. O fluxo contém algumas linhas: ZoneId (geralmente 3 para “Internet”), a URL de origem e a URL de referência. O Windows lê isso sempre que um arquivo é aberto e decide se deve exibir o aviso de segurança, se o PowerShell deve ignorar a política de execução ou se as macros devem ser desabilitadas. O mecanismo é chamado de Marca da Web (MotW).

Remover o fluxo remove o flag “veio de outro computador” para esse arquivo. O arquivo em si permanece inalterado. Outras verificações de segurança (SmartScreen, antivírus, assinatura de código) ainda se aplicam.

Método 1: Unblock-File para uma pasta inteira

  1. Abra o PowerShell (não é necessário administrador para arquivos no seu próprio perfil).
  2. Navegue até a pasta pai. Por exemplo, cd C:\Downloads\projetofoo.
  3. Execute:

    Get-ChildItem -Recurse | Unblock-File

  4. O comando remove silenciosamente o fluxo Zone.Identifier de todos os arquivos na pasta atual. Nenhuma saída significa sucesso.
  5. Para arquivos fora do seu perfil, execute o PowerShell como Administrador e use o caminho absoluto: Get-ChildItem -Path D:\repos\ferramenta-cliente -Recurse | Unblock-File.

Este é o caminho mais limpo. Unblock-File é um cmdlet de primeira classe, presente em toda instalação do Windows, e mexe apenas no ADS — não modifica nenhum outro metadado do arquivo.

ADVERTISEMENT

Método 2: Remover o fluxo manualmente com a sintaxe de dois pontos

Para scripts em torno do Unblock-File, ou para inspecionar o que realmente está armazenado, use a sintaxe de fluxo alternativo diretamente.

  1. Para listar fluxos em um arquivo:

    Get-Item C:\Downloads\teste.zip -Stream *

  2. Para visualizar o conteúdo do fluxo Zone.Identifier:

    Get-Content C:\Downloads\teste.zip -Stream Zone.Identifier

  3. Para excluir apenas o fluxo Zone.Identifier:

    Remove-Item C:\Downloads\teste.zip -Stream Zone.Identifier

  4. Para lote:

    Get-ChildItem C:\Downloads -Recurse -File | ForEach-Object { Remove-Item $_.FullName -Stream Zone.Identifier -ErrorAction SilentlyContinue }

Isso oferece um controle mais refinado do que o Unblock-File e é útil se você quiser registrar quais arquivos tinham o fluxo antes de removê-los.

Método 3: Bloquear MotW para uma pasta confiável via GPO

Se você baixa regularmente para a mesma pasta de uma fonte confiável e não quer ficar desbloqueando arquivos, adicione a pasta à zona de Intranet Local — o Windows então não aplicará MotW a nada que chegar lá.

  1. Abra inetcpl.cpl. Vá para a guia Segurança.
  2. Clique em Intranet localSitesAvançado.
  3. Adicione file://localhost/C:/Downloads/fonte-confiavel (ajuste o caminho). Clique em Adicionar, depois Fechar.
  4. Isso não afeta novos downloads (os navegadores ainda os marcam), mas instrui o Windows a tratar arquivos nesse caminho como zona de Intranet Local — restrições menores.
  5. Para uma abordagem mais drástica, defina o valor do registro HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments\SaveZoneInformation como 1. Isso instrui o Windows a não escrever fluxos Zone.Identifier. (Não faça isso em um PC compartilhado; enfraquece a proteção MotW globalmente.)

O método 3 é mais útil para servidores de build, runners de CI/CD e máquinas similares onde todo arquivo baixado é confiável e os avisos de segurança só atrapalham.

ADVERTISEMENT

Como verificar se a correção funcionou

  • Clique com o botão direito em um arquivo anteriormente bloqueado e escolha Propriedades. A caixa de seleção Desbloquear na parte inferior da guia Geral desapareceu — o arquivo não está mais marcado.
  • Tente abri-lo. Nenhum diálogo “Este arquivo veio de outro computador” aparece.
  • Para scripts PowerShell, execute-os — eles rodam sem o banner “a execução de scripts está desabilitada” causado pelo MotW (supondo que sua ExecutionPolicy já os permita).
  • Execute Get-Item arquivo.ext -Stream Zone.Identifier — retorna um erro porque o fluxo não existe mais.

Se nada disso funcionar

Se os arquivos continuarem bloqueados após o Unblock-File, seu navegador ou uma ferramenta de sincronização está reaplicando o MotW a cada salvamento. Verifique as configurações da ferramenta de download — alguns clientes VPN e navegadores gerenciados por empresas reescrevem o fluxo com valores de ZoneId mais restritivos. Para arquivos em pastas do OneDrive ou Dropbox que rebloqueiam após a sincronização, o cliente de nuvem está preservando o ADS durante o ciclo; desbloqueie localmente após a sincronização, não antes. Como último recurso, copie os arquivos para um local confiável, execute Unblock-File lá e deixe os originais de lado — o Windows trata a cópia como recém-criada, sem MotW.

Conclusão: Get-ChildItem -Recurse | Unblock-File resolve 99% das necessidades de desbloqueio em lote em uma linha. Use a sintaxe manual de fluxo quando precisar registrar ou inspecionar; use a abordagem GPO/zona para pastas na lista de permissões.

ADVERTISEMENT