Как массово разблокировать файлы в Windows через PowerShell

Что такое «блокировка» файлов и почему Windows это делает
Кратко: Windows помечает файлы, скачанные из интернета, отметкой Mark‑of‑the‑Web (поток Alternate Data Stream Zone.Identifier). Это защитная мера: при попытке открыть файл Windows и антивирус могут предупреждать или блокировать запуск. Если вы уверены в происхождении и безопасности файлов, метку можно снять.
Определение: Mark‑of‑the‑Web — метка в доп. потоке файла, указывающая, что файл пришёл извне.
Быстрый способ: основная команда PowerShell
Вы можете снять блокировку одного файла вручную через проводник: правой кнопкой → Показать дополнительные параметры (на Windows 11) → Свойства → вкладка Общие → внизу установить флажок Разблокировать.
Но для множества файлов удобнее использовать PowerShell. Структура команды, которую можно применить из административной сессии PowerShell:
Get-ChildItem -Path "C:\путь\к\папке" | Unblock-File -ConfirmЗамените “C:\путь\к\папке” на путь к вашей папке (можно получить через проводник → правый клик по папке → «Копировать как путь»).
Подробная пошаговая инструкция
- Откройте Пуск и нажмите Win + S для поиска.
- Введите powershell.
- В результатах правой кнопкой по PowerShell → Запуск от имени администратора.
- Вставьте команду, заменив путь на ваш, и нажмите Enter.
Get-ChildItem -Path "C:\Users\Ivan\Downloads\МоиФайлы" | Unblock-File -ConfirmЕсли вы укажете параметр -Confirm, PowerShell запросит подтверждение для каждого файла. В интерактивном режиме отвечайте Y (Yes) или N (No). Для подтверждения всех одновременно введите A.
Варианты и полезные параметры
- Рекурсивно по подпапкам:
Get-ChildItem -Path "C:\путь\к\папке" -Recurse | Unblock-File -Confirm- Подавить все запросы и снять блокировку без подтверждений:
Get-ChildItem -Path "C:\путь\к\папке" -Recurse | Unblock-File -Confirm:$false- Обрабатывать только определённые расширения (например, .exe и .dll):
Get-ChildItem -Path "C:\путь\к\папке" -Recurse -Include *.exe, *.dll | Unblock-File -Confirm:$false- Альтернативный синтаксис (эквивалент):
Get-ChildItem "C:\путь\к\папке" -Recurse | ForEach-Object { Unblock-File $_.FullName }Примечание: команда Unblock-File доступна в современных версиях PowerShell (Windows PowerShell и PowerShell Core). Если команда недоступна, проверьте версию PowerShell (Get-Host) или используйте удаление потока Zone.Identifier вручную.
Когда этот способ не сработает: примеры и альтернативы
- Файлы находятся на сетевом ресурсе с политикой, запрещающей снятие меток. В таких случаях убедитесь в правах доступа и настройках сети.
- Если Unblock-File отсутствует в старой версии PowerShell, можно удалить поток Zone.Identifier вручную:
Remove-Item -Path "C:\путь\к\файлу:Zone.Identifier" -ErrorAction SilentlyContinue- Для массовой централизованной настройки можно использовать Group Policy или правки в реестре (этот путь требует осторожности и обычно используется администраторами).
Безопасность: проверяйте файлы перед снятием блокировки
Important: Снимать блокировку нужно только для надёжных файлов. Перед этим:
- Просканируйте файлы антивирусом.
- Проверьте цифровую подпись у исполняемых файлов.
- Убедитесь, что источник загрузки надёжен.
Если вы администратор в организации, рассмотрите внедрение процессов проверки и журналирования.
Чеклист по ролям
Для рядового пользователя:
- Убедиться в источнике загрузки.
- Использовать -Confirm для интерактивного контроля.
- При сомнениях — не снимать блокировку.
Для администратора/ИТ‑специалиста:
- Использовать рекурсивные скрипты с логированием.
- Внедрять политики (GPO) для доверенных источников.
- Автоматизировать проверку цифровых подписей перед разблокировкой.
Маленькая шпаргалка команд (Cheat sheet)
- Базовый (интерактивный):
Get-ChildItem -Path "C:\Downloads\Folder" | Unblock-File -Confirm- Массово и без подтверждений:
Get-ChildItem -Path "C:\Downloads\Folder" -Recurse | Unblock-File -Confirm:$false- Только .zip и .exe:
Get-ChildItem "C:\Downloads\Folder" -Recurse -Include *.zip,*.exe | Unblock-File -Confirm:$falseКритерии приёмки
- Все целевые файлы в указанной папке сняты с блокировки (Zone.Identifier удалён).
- Скрипт выполняется без ошибок и логирует обработанные файлы.
- Для критичных сред — цифровые подписи проверены и соответствуют правилам безопасности.
Итог
PowerShell даёт простой и гибкий способ массово снять блокировку с файлов, помеченных Windows как загруженные из интернета. Используйте рекурсивную обработку и параметры подавления подтверждений для автоматизации, но обязательно сочетайте это с проверкой безопасности и политиками доступа.
Краткие рекомендации:
- Используйте -Confirm при первом запуске для контроля.
- Для автоматизации используйте -Confirm:$false и логирование.
- Не снимайте блокировку с непроверенных файлов.
Однострочный пример для быстрого запуска:
Get-ChildItem -Path "C:\Users\Public\Downloads" -Recurse | Unblock-File -Confirm:$false1‑линейный словарь:
- Unblock-File — PowerShell‑команда для удаления метки Mark‑of‑the‑Web с файлов.
Памятка безопасности: перед массовой разблокировкой сканируйте файлы антивирусом и проверяйте цифровые подписи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента