Desbloquear un archivo con PowerShell?


Estoy intentando que PowerShell desbloquee un archivo en Win2K8 R2.

¿Alguien tiene un puntero en cuanto a la sintaxis?

Author: Ruben Bartelink, 2009-10-24

11 answers

Si está utilizando PowerShell v3, puede utilizar el Unblock-File cmdlet.


La parte de "bloqueo" es simplemente un flujo de datos alternativo del archivo, llamado "Zone".Identificador". Puede mostrarlo en CMD usando la redirección de entrada (sin embargo, no hay otra forma de llegar a una secuencia en CMD):

H:\Downloads> more < test.exe:Zone.Identifier
[ZoneTransfer]
ZoneId=3

Puedes encontrarlos usando dir /r en Windows Vista y posteriores:

2009-10-24  12:18        54.538.056 test.exe
                                 24 test.exe:Zone.Identifier:$DATA

También en CMD puede deshacerse fácilmente de eso sobrescribiéndolo (usando redirección de salida, esto hora):

echo.>myDownloadedFile.exe:Zone.Identifier

Que no es bastante lo mismo que eliminar los ANUNCIOS por completo, pero funciona en ese Explorador ya no se queja.

No parece haber soporte nativo para el manejo de ANUNCIOS desde PowerShell (como se menciona en el blog del tipo de PowerShell aquí. Ese artículo también contiene información sobre cómo obtener esa funcionalidad en PowerShell). Usted podría, sin embargo, simplemente llamar a cmd:

cmd /c "echo.>test.exe:Zone.Identifier"

Que funciona desde PowerShell como bien.

Otra opción sería la de Mark Russinovich streams utilidad que le permite inspeccionar los ANUNCIOS de un archivo y también eliminarlos. So

streams -d myDownloadedFile.exe

También funciona.

 45
Author: Joey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-07 18:09:09

El módulo PoshCode incluye las funciones Set-DownloadFlag y Remove-DownloadFlag que funcionan como se anuncia. :) Acabo de sacar esa pieza en su propia contribución de guion http://poshcode.org/1430 ... también funcionará en PowerShell 1 si utiliza la función New-Type en lugar de Add-Type (http://poshcode.org/720 )

 9
Author: Jaykul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-29 06:43:05

Oneliner para eliminar zona informarion(inspirado por respuesta aceptada) para todos los niños (con citas correctas).

get-childitem -rec | % { cmd /c "echo.>""$($_.FullName)"":Zone.Identifier" }

No responde estrictamente a la pregunta, solo quiero asegurarme de que la próxima vez que se me ocurra este problema ya haya solución :).

PS. Funciona en PS 2.0

 5
Author: Mike Chaliy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-06 16:13:57

Nuevo en publicar en foros como este y este podría ser un tema antiguo, pero esto es lo que estás buscando.

get-item -Path "path to file(s)" -Stream "Zone.Identifier" -ErrorAction "SilentlyContinue"

Esto debería enumerar los archivos que solo están bloqueados.

Unblock-File -Path "Path to blocked file(s)"

Esto los desbloqueará.

 3
Author: Parrish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-23 14:42:51

Elimine el flujo de archivos alternativo usando Corrientes.exe ver este post: http://www.paraesthesia.com/archive/2010/05/19/unblocking-multiple-files-at-once.aspx

 1
Author: Geert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-17 12:37:50

Escribí una pequeña función que utiliza la API Win32 para eliminar el flujo de datos alternativo Zone.Identifier NTFS que es lo que Windows utiliza para determinar si un archivo se va a bloquear.

. NET no tiene acceso a flujos de datos alternativos, por lo que la función utiliza una técnica llamada invocación de plataforma para llamar a la API Win32 nativa. La ventaja de esto sobre algunas otras soluciones para PowerShell es que admite la canalización de PowerShell para que pueda canalizar una lista de rutas de archivo u objetos System.IO.FileInfo a la función. La función también no tiene ninguna dependencia externa y en realidad elimina el flujo de datos alternativo en lugar de simplemente eliminar su contenido.

Http://andyarismendi.blogspot.com/2012/02/unblocking-files-with-powershell.html

 1
Author: Andy Arismendi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-25 23:21:48

Tendré que enmendar la respuesta de Mike: esto no funcionará si hay espacios en $_.FullName (e. g. like in "C:\Program Archivos"), por lo tanto, tiene que ser:

get-childitem -rec | % { cmd /c "echo.>""$($_.FullName)"":Zone.Identifier" }
 0
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-06 16:07:21

Todavía no he visto ninguna respuesta que parezca usar los cmdlets de powershell adecuados para hacer esto.

Aquí podemos encontrar archivos DLL en la carpeta actual que contienen la zona.identificador:

Get-Item -Path .\*.dll -stream * | where {$_.Stream -eq "Zone.Identifier" }

Aquí solo eliminamos los flujos no deseados, a diferencia de algunas respuestas anteriores que podrían dañar otros flujos:

Remove-Item  -Path .\*.dll -stream Zone.Identifier
 0
Author: Warren P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-10 19:11:23

Si el servidor no tiene Powershell > v3 (PS PSVersionTable.PSVersion.Major-ge 3). A continuación, utilice el viejo y confiable DOS:

for /f "tokens=*" %f in ('dir /b *.*') do echo.>"%f":Zone.Identifier 
 0
Author: OzBob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-19 09:18:12

Si está utilizando PowerShell 3.0 o superior, vesion, Unblock-file El cmdlet PowerShell debería resolver este problema desbloqueando el archivo, aunque no tenga el botón desbloquear en la ventana propiedades del archivo.

El cmdlet Unblock-File permite abrir los archivos que se descargaron de Internet. Desbloquea los archivos de script de Windows PowerShell que se descargaron de Internet para que pueda ejecutarlos, incluso cuando la directiva de ejecución de Windows PowerShell es RemoteSigned. De forma predeterminada, estos archivos se bloquean para proteger el equipo de archivos que no son de confianza.

Simplemente abra la ventana de PowerShell y siga la sintaxis a continuación. Para obtener más información sobre la sintaxis, vaya a aquí

Ejemplo:

unblock-file -path C:\Downloads\MyFileName.chm

Desbloquear archivo con captura de pantalla de PowerShell

Advertencia: No desbloquee archivos no seguros.

 0
Author: Dinch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-30 16:50:55

Quieres decir esto:

set-executionpolicy remotesigned

Esto le permitirá ejecutar scripts locales sin que estén firmados, y remotos si están firmados. Más información disponible aquí.

 -2
Author: Kent Boogaart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-28 00:53:35