Cómo administrar y cerrar archivos abiertos en Windows Server

Cómo administrar y forzar el cierre de archivos abiertos en un servidor de archivos de Windows

Gestionar archivos abiertos en un servidor de archivos puede ser un poco complicado, sobre todo si los usuarios olvidan cerrarlos o se desconectan inesperadamente. Supongamos que tienes clientes que se quejan porque no pueden modificar un archivo y sospechas que se debe a que alguien lo ha bloqueado. O quizás tienes cientos de archivos abiertos y necesitas una forma rápida de liberarlos sin tener que revisar un millón de entradas. Esta guía explica cómo identificar esos molestos archivos abiertos, ver quién los bloqueó y, si es necesario, cerrar esas sesiones forzosamente. Advertencia: cerrar archivos forzosamente conlleva riesgos: los usuarios podrían perder datos no guardados, así que usa estos comandos con cuidado. Pero a veces es la única manera de solucionar el problema y mantener el sistema en marcha.

Cómo encontrar y ver archivos abiertos en Windows Server

Uso de herramientas gráficas: el método rápido y sencillo

Si prefieres hacer clic en lugar de escribir comandos, probablemente la opción más sencilla sea el complemento Administración del equipo. Pulsa Ejecutar ( Win + R) y escribe compmgmt.msc. Desde allí: – Ve a Herramientas del sistema —> Carpetas compartidas —> Archivos abiertos. Verás una lista de archivos abiertos, con rutas (como D:\files\report.xlsx ), usuarios conectados, el número de bloqueos y si los abrieron en modo de lectura o escritura.Consejo: Es posible que necesites permisos de administrador para ver todos los archivos abiertos, especialmente si pertenecen a recursos compartidos de otros usuarios. En algunas configuraciones, actualizar o volver a iniciar sesión puede ser útil si la lista no se muestra correctamente; Windows puede ser un poco extraño al actualizar esta información.—

Línea de comandos: rápida y precisa

Si te gusta trabajar con CMD o PowerShell, este comando openfileses ideal. Simplemente ejecuta la consola como administrador y escribe: openfiles /Query /fo csv – Esto genera una lista CSV con números de sesión, usuarios, archivos, etc.- Nota: Debes ejecutar openfiles /Query /reload una vez para que muestre los archivos recientes si nunca lo has usado.- En algunos sistemas, el comando podría no mostrar nada a menos que primero hayas habilitado el seguimiento de archivos sin conexión mediante la Política de seguridad local. Como alternativa, el Get-SmbOpenFilecmdlet de PowerShell ofrece una vista más clara: powershell Get-SmbOpenFile | Select-Object ClientUserName, ClientComputerName, Path, SessionID. Esto mostrará quién tiene qué abierto, desde dónde y su ID de sesión.Útil para crear scripts o simplemente para obtener una vista rápida.—

Cómo comprobar quién ha bloqueado un archivo

Cuando los usuarios reciben mensajes de advertencia como *»El documento está bloqueado para edición»*, suele deberse a que alguien más lo tiene abierto. Para obtener más información, puede ejecutar: powershell openfiles /query /s [nombre-del-servidor] /fo csv | find /i «nombre-del-archivo.ext» Reemplazar `` con el nombre de su servidor (como `lon-fs01`) y `»filename.ext»` con parte del nombre del archivo o el nombre exacto. La opción `/i` hace que la búsqueda no distinga entre mayúsculas y minúsculas.Por ejemplo: powershell openfiles /query /s lon-fs01 /fo csv | find /i «name.docx» Esto muestra quién tiene el archivo bloqueado. Si solo conoce parte del nombre del archivo, incluya ese fragmento.Consejo de PowerShell: Para filtrar por usuario o nombre de archivo: powershell Get-SmbOpenFile | Where-Object {$_. Path -like «*sale_report*»} o powershell Get-SmbOpenFile | Where-Object {$_. ClientUserName -like «*mjenny*»} Ideal para encontrar las fuentes de bloqueo sin desorden.—

Cómo forzar el cierre de archivos abiertos en Windows Server

Si un archivo se bloquea y nada funciona, podrías tener que forzar la desconexión de la sesión. Puedes hacerlo a través de Administración de equipos: – Busca la sesión o el archivo en la lista de archivos abiertos – Haz clic derecho y selecciona » Cerrar archivo abierto» (si usas la interfaz gráfica de usuario).Desde la línea de comandos es más rápido. Primero, busca el ID de la sesión (por ejemplo, por similitud con esto): powershell openfiles /Query /fo csv | find /i «report2023.xlsx».Supongamos que devuelve un ID como 3489847304; entonces puedes desconectar esa sesión: powershell openfiles /disconnect /ID 3489847304. Recibirás un mensaje de éxito o un error si no se puede desconectar.Para desconectar todas las sesiones de un usuario específico (por ejemplo, «mjenny») en un servidor determinado: powershell openfiles /disconnect /s lon-fs01 /u «corp\mjenny» /id * Aquí, `/id *` se dirige a todas las sesiones de ese usuario. Recuerde: estos comandos deben manejarse con cuidado, ya que desconectar usuarios repentinamente puede provocar la pérdida de datos. Como alternativa, puede usar PowerShell Close-SmbOpenFile: powershell Close-SmbOpenFile -FileId 4123426323239 Para un cierre más masivo, combine comandos como este: powershell Get-SmbOpenFile | Where-Object {$_. Path -like «*annual2020.xlsx»} | Close-SmbOpenFile -Force Es posible que se le solicite confirmación (presione Y), o puede agregar el -Forceparámetro para omitir las advertencias.—

Desconectar archivos de forma remota: PowerShell llega al rescate

¿Quieres hacer todo esto remotamente? Primero necesitas establecer una sesión con el servidor: powershell $sessn = New-CIMSession -ComputerName lon-fs01. Luego, busca y cierra archivos específicos por su ruta: powershell Get-SMBOpenFile -CIMSession $sessn | Where-Object {$_. Path -like «*pubs.docx»} | Close-SMBOpenFile -CIMSession $sessn. Antes de ejecutar esto, asegúrate de que la comunicación remota de PowerShell esté habilitada en el servidor y de que tengas los permisos correctos. Este método es más limpio y menos intrusivo que desconectarlo directamente.—

Resumen

  • Utilice Administración de equipos para realizar comprobaciones visuales rápidas y cierres manuales.
  • Las herramientas de línea de comandos como openfilesPowerShell Get-SmbOpenFilehacen que las acciones masivas o automatizadas sean mucho más fáciles.
  • Tenga cuidado al cerrar archivos a la fuerza: los usuarios pueden perder las ediciones no guardadas.
  • Las desconexiones remotas se pueden realizar a través de PowerShell, pero requieren la configuración y los permisos adecuados.

Resumen

Gestionar archivos abiertos en un entorno Windows puede ser una tarea tediosa, especialmente en servidores con mucha actividad. Los métodos anteriores han funcionado en varias configuraciones, pero a veces solo hay que recurrir a la línea de comandos. Con suerte, esto le ahorrará tiempo a quien intente reparar esos archivos bloqueados. Solo recuerda: usa estas funciones con inteligencia.¡Mucha suerte!