Búsqueda de sitios web

Desbloquear archivos de forma recursiva usando desbloquear archivo en PowerShell


Cuando descarga archivos de Internet, Windows puede bloquearlos para evitar que se ejecuten scripts potencialmente dañinos en su sistema. Esto puede llevar a una situación en la que necesite desbloquear numerosos archivos, lo que puede resultar bastante difícil si se hace manualmente. Afortunadamente, PowerShell ofrece una forma potente y eficiente de desbloquear archivos de forma masiva a través de su cmdlet Unblock-File. En este artículo, exploraremos cómo usar PowerShell para desbloquear archivos de forma recursiva, garantizando que sus archivos sean accesibles mientras mantiene la seguridad de su sistema.

Para desbloquear archivos de forma recursiva mediante PowerShell, puede utilizar el cmdlet Get-ChildItem combinado con el cmdlet Unblock-File. Este enfoque le permite especificar un directorio y aplicar el proceso de desbloqueo a todos los archivos dentro de ese directorio y sus subdirectorios. Por ejemplo:

Get-ChildItem -Path "C:\MyFolder" -Recurse | Unblock-File

Este comando buscará y desbloqueará todos los archivos en la ruta indicada, incluidos los de todas las subcarpetas.

¿Qué es el cmdlet Desbloquear archivo?

El cmdlet Unblock-File es una utilidad de PowerShell que le permite desbloquear archivos que han sido etiquetados como no seguros porque se descargaron de Internet. Este cmdlet cambia las propiedades del archivo para eliminar el estado "bloqueado", haciendo que el archivo sea accesible para su uso en su sistema.

Desbloqueo recursivo con PowerShell

Para desbloquear archivos dentro de una carpeta y todas sus subcarpetas, debe usar el cmdlet Get-ChildItem en combinación con el cmdlet Unblock-File. El cmdlet Get-ChildItem recupera los archivos en una ruta especificada y con el parámetro -Recurse, incluirá todos los subdirectorios en la búsqueda.

1. Script de desbloqueo recursivo básico

Aquí hay un script básico para desbloquear todos los archivos dentro de una carpeta específica y sus subcarpetas:

Get-ChildItem -Path "C:\MyFolder" -Recurse | Unblock-File

Reemplace "C:\MyFolder" con la ruta al directorio que contiene los archivos que desea desbloquear.

2. Filtrar tipos de archivos

Si desea desbloquear solo tipos de archivos específicos, puede agregar un filtro al cmdlet Get-ChildItem. Por ejemplo, para desbloquear solo archivos de script de PowerShell .ps1, usaría el siguiente script:

Get-ChildItem -Path "C:\MyFolder" -Recurse -Filter "*.ps1" | Unblock-File

3. Verificar el estado de los archivos

Antes de desbloquear archivos, es posible que desees comprobar qué archivos están bloqueados. Puede hacerlo utilizando el cmdlet Get-Item y comprobando la propiedad IsBlocked. Así es como puedes enumerar todos los archivos bloqueados:

Get-ChildItem -Path "C:\MyFolder" -Recurse | Where-Object { $_.Attributes -match 'Blocked' }

4. Script de desbloqueo recursivo con registro

Si desea registrar los archivos que ha desbloqueado con fines de auditoría, el siguiente script desbloquea los archivos de forma recursiva y escribe los nombres de los archivos desbloqueados en un archivo de registro:

$FolderPath = "C:\MyFolder"
$LogPath = "C:\MyFolderLog\LogFile.txt"

Get-ChildItem -Path $FolderPath -Recurse | Unblock-File -Verbose 4>&1 | Out-File $LogPath

Este script dirige la salida detallada (que incluye los archivos que se desbloquean) al archivo de registro especificado en $LogPath.

Conclusión

Desbloquear archivos descargados de Internet es un paso esencial para mantener tanto la usabilidad como la seguridad de su sistema Windows. PowerShell proporciona una manera poderosa de realizar esta tarea, especialmente cuando se trata de una gran cantidad de archivos. Al utilizar el cmdlet Unblock-File con el cmdlet Get-ChildItem, puede desbloquear archivos de forma eficaz y recursiva con un esfuerzo mínimo.

En este tutorial de PowerShell, he explicado cómo desbloquear archivos de forma recursiva usando unblock-file en PowerShell.

Artículos relacionados