Retire el dispositivo USB de la línea de comando

61

Estoy construyendo un script de copia de seguridad para Windows 7, y la última acción que quiero que realice es "quitar" de forma segura la unidad USB a la que está haciendo la copia de seguridad. Tengo la impresión de que enchufar la unidad en el mismo puerto USB todo el tiempo mantendrá el mismo DEV_ID (corrígeme si me equivoco). Con una línea de comando (o PowerShell), ¿cómo puedo decirle a Windows que elimine el hardware de forma segura automáticamente sin la intervención del usuario?

Al igual que un marcador de posición, también sería bueno conocer otros sistemas operativos que pueden tener una manera de hacerlo.

El canadiense Luke REINSTATE MONICA
fuente
55
Tengo que admitir que la decepción por algunas de las “respuestas” por debajo del cual claramente no entienden lo que se pide y proporciona opciones que están obviamente inútil para la tarea de automatización como asked.` ಠ_ಠ
Synetech
> Tengo la impresión de que enchufar la unidad en el mismo puerto USB todo el tiempo mantendrá el mismo DEV_ID, corrígeme si me equivoco. Eso es correcto. Windows trata una unidad y el puerto al que está conectado como un par de identificación. Al conectarlo a un puerto diferente (en el que nunca se ha conectado), activará la función de instalación del controlador de Windows. Peor aún, si ha asignado una letra de unidad no consecutiva al volumen, al enchufarlo en un nuevo puerto no retendrá esa letra, obtendrá la siguiente letra disponible y deberá asignar una letra manualmente nuevamente.
Synetech
1
(Por extraño que parezca, si conecta una unidad a un puerto y deja que Windows instale controladores para ella, luego asigne una letra de unidad no consecutiva, luego desenchúfela en una unidad diferente que sea de la misma marca, modelo, y tamaño, entonces Windows lo tratará exactamente como si hubiera enchufado la unidad anterior nuevamente.)
Synetech
¿Podría actualizar el título para que sea correcto? Estaba buscando respuestas para eliminar "dispositivos" USB, no "unidades" USB.

Respuestas:

32

RemoveDrive me ha servido bien en el pasado

stijn
fuente
44
eliminadorive \ x64> RemoveDrive.exe f: -L es el código, para aquellos que tienen prisa
fedmich
Esto terminó trabajando para mí. Curiosamente, un WqlEventQuery que he conectado todavía espera para disparar hasta que físicamente saque el disco. No sé mucho sobre estas cosas, pero me sorprendió. No es un problema para mí en este caso.
samuelesque
1
RemoveDrive es bueno, pero el problema es que en realidad elimina todo el disco. Para los lectores de tarjetas, en lugar de simplemente expulsar la tarjeta (como hacer clic con el botón derecho y seleccionar Expulsar de mi computadora), y permitirle conectar otro, elimina todo el lector de tarjetas, lo que requiere que se desconecte físicamente y se vuelva a conectar reiniciado o, peor aún, reiniciando si el lector de tarjetas está integrado (es posible hacerlo a través del software pero es molesto).
Synetech
También puedes ejecutarlo desde cygwin.
Kevin Sadler
65

Además del RemoveDrive de Uwe Sieber mencionado en la otra respuesta, hay muchas utilidades que pueden lograr esto. Sigue una pequeña lista:

  • USB Disk Ejector es principalmente una utilidad basada en GUI, pero se puede usar igualmente bien desde la línea de comandos para expulsar la unidad desde la que se ejecuta el programa, o cualquier unidad especificando la letra de la unidad / nombre (parcial) de la unidad / punto de montaje, etc. Gratis y de código abierto.

    Eyector de disco USB

  • USB Safely Remove no es gratuito, pero es una utilidad de eliminación de disco con esteroides, con muchas características avanzadas , que incluyen, por supuesto , soporte de línea de comandos . Zentimo es su hermano mayor, con aún más características .

    USB con seguridad quitar

  • El propio DevCon de Microsoft es la versión de línea de comandos de Device Manager. Además de la versión original de la era Win2K / XP disponible en la página KB, hay versiones más recientes (tanto de 32 como de 64 bits) disponibles de varias fuentes de MS como se menciona en este artículo Dónde encontrar DevCon.exe . DevCon.exe para Windows 7 (y probablemente también Windows 8) se puede encontrar enterrado en el Kit de controladores de Windows (WDK) apropiado , como se menciona en este hilo (que también contiene enlaces de descarga al ejecutable extraído ).

    devcon status *o devcon hwids *o devcon findall =usb(para una lista más compacta) debería indicarle la ID de hardware del dispositivo. Por ejemplo:

    USB \ VID_0781 y PID_7113 \ 0001162825
    Nombre: se
    está ejecutando el controlador del dispositivo de almacenamiento masivo USB .

    Luego puede intentar eliminar el dispositivo con devcon remove "USB\VID_0781&PID_7113"(se permiten comodines como *, ¡pero tenga cuidado o podría terminar eliminando algo completamente diferente!)


Alguien preguntó " ¿Hay un comando de DOS (cmd.exe de Win7) para expulsar una memoria USB? " Que desafortunadamente se cerró como un duplicado de este hilo. Sin embargo, la pregunta era sobre la expulsión de unidades USB mientras estaba en la consola de recuperación de Windows / símbolo del sistema de recuperación del sistema , por lo que es poco probable que alguna de las utilidades anteriores ayude. En tal situación, el siguiente método con Diskpart debería funcionar:

  1. Escriba diskparty espere el indicador de diskpart ( DISKPART>)

  2. Tipo list volume

  3. Tenga en cuenta el número de volumen de la unidad USB con cuidado (use las propiedades enumeradas, como la letra de unidad, la etiqueta, el tipo y el tamaño para obtener ayuda)

  4. Tipo select volume <number>, donde <number>está el número de volumen anotado arriba

    Diskpart

  5. Tipo remove all dismount

  6. Escriba exitpara salir de Diskpart

Ahora debería poder extraer de forma segura su unidad USB sin temor a perder datos.

Karan
fuente
1
Gracias por tomarse el tiempo para responder a mi pregunta incluso después de que SU la cerró. Seguí adelante y actué según la sugerencia de Jared Tritsch y quité el disco simplemente quitándolo. Una vez que vuelva a poner en funcionamiento la computadora portátil, experimentaré con DISKPART. Aquí está el enlace a las especificaciones de Microsoft para DISKPART. technet.microsoft.com/en-us/library/bb490893.aspx
zundarz
2
@zundarz: ¡De nada! La política de eliminación predeterminada en Windows para dispositivos extraíbles es la eliminación rápida , que deshabilitó el almacenamiento en caché de escritura y permite quitar la unidad sin necesidad de quitarla primero con seguridad. Vea esta captura de pantalla para más. Por lo tanto, la sugerencia de Jared sobre tirar de la unidad no debería causar pérdida de datos si las unidades extraíbles también se tratan de la misma manera en la Consola de recuperación. Aún así, para mi tranquilidad, siempre me aseguro de quitar con seguridad cada unidad antes de sacarla. Puede ser un placebo, pero evita que me preocupe. :)
Karan
PD Tenga cuidado con Diskpart: es potente y, por lo tanto, bastante peligroso. La razón por la que lo usé para desmontar la unidad es porque está disponible tanto en la Consola de recuperación de XP como en las Opciones de recuperación del sistema / Símbolo del sistema de Vista / 7.
Karan
Intenté usar Diskpartmientras estaba en modo normal de Windows. Este es el mensaje que recibo después de realizar el paso 5 anterior. "DiskPart eliminó con éxito la letra de la unidad, pero su computadora debe reiniciarse antes de que los cambios surtan efecto. Diskpart desmontó con éxito el volumen". Intenté usarlo en un medio extraíble (tarjeta SD) en lugar de un dispositivo extraíble (como el lector de tarjetas SD o la unidad flash USB). El indicador LED en el lector no se apagó, pero permaneció encendido (es decir, dejó de parpadear como ocasionalmente cuando una tarjeta SD solo se encuentra en él). Entonces supongo que es seguro eliminarlo entonces.
Samir
3
Para deshacer el remove all dismountcomando debe usar el mountvolcomando. Para obtener más información, consulte la biblioteca de Technet aquí y también aquí . Después de haberlo utilizado mountvol, debe reiniciar para que los cambios surtan efecto. Alternativamente, también puede usar Administración de discos para asignar una nueva letra de unidad.
Samir
17

Para responder a esta pregunta ... No necesitas cosas de terceros.

Con una línea de comando (o PowerShell), ¿cómo puedo decirle a Windows que elimine el hardware de forma segura automáticamente sin la intervención del usuario?

Ejecute este comando: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll para abrir el cuadro de diálogo Quitar hardware con seguridad:

El cuadro de diálogo Quitar hardware con seguridad

climenole
fuente
44
¿Puedes describir lo que hace?
Canadian Luke REINSTATE MONICA
1
lanzar la eliminación segura para usb
climenole
11
¿No tendré que hacer clic en algo entonces?
Canadian Luke REINSTATE MONICA
2
Esto es bastante bueno, pero desafortunadamente para fines de automatización, no es mejor que cualquiera de las sugerencias de Karan.
Synetech
1
control hotplug.dll , es decir, sin _RunDLL no funciona para mí en Vista SP2
user66001
2

Dado que es un dispositivo de respaldo, significa que es un dispositivo de almacenamiento, por lo tanto, se puede hacer desde PowerShell, solo reemplace X: con la letra de unidad deseada:

$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")
Overmind
fuente
1
He visto esta solución en serverfault así como en stackoverflow , pero parece que no puedo hacer que funcione con mi HDD externo. No hay mensaje de error, simplemente no hace nada. Usar "F:"o "F:\"no marcó la diferencia, al igual que ejecutar PowerShell como administrador. La eliminación segura mediante la barra de tareas está funcionando. ¿Qué estoy haciendo mal?
flolilo
¿El comando powershell real no devuelve ningún mensaje de error (texto rojo)?
Overmind
Si desconecto F: \ y ejecuto el comando, aparece un error que dice que no puedo ejecutar un método que es NULL (el mensaje está en alemán, por lo que no estoy completamente seguro de haber hecho la traducción correcta). Si ejecuto los comandos con F: \ conectado, no hay ningún mensaje $error, también está vacío. Por cierto, estoy ejecutando PowerShell 5.1 en Win10 Pro. F: \ es un HDD USB externo que solo tiene una partición (F :): se puede quitar de forma segura a través de la barra de tareas sin problemas.
flolilo
Curiosamente, cuando uso un pendrive USB (también con una partición), funciona perfectamente. Ambos han habilitado Better performanceen su política de eliminación, aunque eso no parece hacer ninguna diferencia (USB pendrive funciona con ambas configuraciones, USB HDD no). A un segundo pendrive que poseo tampoco le gusta que lo expulsen a través del comando PowerShell. Funcionamiento: Transcend JetFlash 700 (16 GB, FAT32), No funciona: Seagate Expansion Portable 2015 (4 TB, NTFS), Sandisk Extreme (32 GB, exFAT). Todos probaron varias veces en el mismo puerto USB. Una vez más, la eliminación segura mediante el icono de la barra de tareas siempre funciona.
flolilo
@flolilolilo tengo el mismo problema ...
Ploni
1

De acuerdo con este artículo de 7 tutoriales , puede habilitar la desconexión segura configurando "Eliminación rápida". Esto deshabilitará el almacenamiento en caché de escritura por dispositivo , cuyo impacto en el rendimiento es "insignificante"? Sus pasos para Windows 7 están a continuación.

( Editar ) De acuerdo con este artículo de howtogeek , aún debe tener cuidado al configurar "Eliminación rápida". Esto deshabilitará el almacenamiento en caché de escritura y, por lo tanto, evitará la mayoría de los problemas. Pero algunos programas todavía pueden estar escribiendo cosas 'en vivo', hasta que se expulsen / eliminen explícitamente. ( Fin de la edición )

Pasos:

  • conecte el dispositivo en la unidad USB
  • abrir el Administrador de dispositivos
  • expandir unidades de disco
  • haga clic con el botón derecho en su unidad extraíble, por ejemplo, "USB2.0 Flash Disk USB Device".
  • seleccione Propiedades
  • haga clic en la pestaña Políticas
  • habilitar "Eliminación rápida" (deshabilitar "Mejor rendimiento")

( Editar ) Tenga en cuenta que debe usar el Administrador de dispositivos para cambiar la configuración, no se puede hacer desde el Explorador de archivos. (Al menos en mi edición de Windows 10).

Yahoo serio
fuente
1
¡Esto suena como una gran idea para las unidades de respaldo! Parece que esta es la configuración predeterminada (al menos en mi Seagate BUP Slim BK USB External Drive).
Arvo Bowen
1
Los dispositivos con caché de escritura habilitada no se pueden quitar rápidamente.
Overmind
1
¿Es posible configurar esto globalmente para que se aplique a todos y cada uno de los dispositivos de almacenamiento USB que estén conectados en el futuro?
DuckMaestro