Rimuovere il dispositivo USB dalla riga di comando


61

Sto costruendo uno script di backup per Windows 7 e l'ultima azione che desidero eseguire è quella di "rimuovere" in modo sicuro l'unità USB su cui sta eseguendo il backup. Ho l'impressione che collegare l'unità sempre alla stessa porta USB manterrà lo stesso DEV_ID (correggimi se sbaglio). Con una riga di comando (o PowerShell), come posso dire a Windows di rimuovere automaticamente l'hardware in sicurezza senza l'input dell'utente?

Proprio come un segnaposto, anche altri sistemi operativi che potrebbero avere un modo per farlo sarebbero fantastici da sapere.


5
Devo ammettere delusione da parte di alcune delle "risposte" di seguito che chiaramente non capivano quello che veniva chiesto e fornivano opzioni che sono ovviamente inutili per il compito dell'automazione come richiesto. ಠ_ಠ
Synetech

> Ho l'impressione che collegando sempre l'unità SAME alla porta USB manterrà lo stesso DEV_ID, correggimi se sbaglio. È corretto. Windows tratta un'unità e la porta a cui è collegata come una coppia identificativa. Collegandolo a una porta diversa (in cui non è mai stato collegato), si attiverà la funzione di installazione del driver di Windows. Peggio ancora, se al volume è stata assegnata una lettera di unità non consecutiva, collegarla a una nuova porta non manterrà quella lettera e otterrà la successiva lettera disponibile e sarà necessario assegnare nuovamente una lettera manualmente.
Synetech,

1
(Stranamente, se colleghi un'unità a una porta e permetti a Windows di installare i driver per essa, quindi assegna una lettera di unità non consecutiva a essa, quindi scollega una spina in un'unità diversa che sia della stessa marca, modello, e dimensioni, quindi Windows lo tratterà esattamente come se avessi
ricollegato

Potresti aggiornare il titolo per essere corretto. Stavo cercando risposte sulla rimozione di "dispositivi" USB non "unità" USB.

Risposte:


32

RemoveDrive mi ha servito bene in passato


4
removerive \ x64> RemoveDrive.exe f: -L è il codice, per chi ha fretta
fedmich

Questo ha finito per funzionare per me. È interessante notare che un WqlEventQuery che ho collegato attende ancora di sparare fino a quando non si estrae fisicamente l'unità. Non so molto su questa roba, ma mi ha sorpreso. In questo caso non è un problema per me.
samuelesque,

1
RemoveDrive è buono, ma il problema è che rimuove effettivamente l'intera unità. Per i lettori di schede, invece di espellere semplicemente la scheda (come fare clic con il pulsante destro del mouse e selezionare Espelli da Risorse del computer) e consentire di collegarne un'altra, rimuove l'intero lettore di schede, richiedendo che sia scollegato fisicamente e ri collegato, o peggio, riavviare se il lettore di schede è incorporato (è possibile farlo tramite software ma è fastidioso).
Synetech,

Puoi eseguirlo anche da Cygwin.
Kevin Sadler,

65

Oltre a RemoveDrive di Uwe Sieber menzionato nell'altra risposta, ci sono un sacco di utility che possono farlo. Segue un piccolo elenco:

  • USB Disk Ejector è principalmente un'utilità basata su GUI ma può essere utilizzata ugualmente bene dalla riga di comando per espellere l'unità da cui è in esecuzione il programma o qualsiasi unità specificando la lettera dell'unità / nome (parziale) dell'unità / punto di montaggio ecc. Gratuito e open source.

    Espulsore disco USB

  • USB Safely Remove non è gratuito ma è un'utilità di rimozione del disco con steroidi, con molte funzionalità avanzate , incluso ovviamente il supporto da riga di comando . Zentimo è il fratello maggiore, con ancora più funzionalità .

    USB Rimozione sicura

  • DevCon di Microsoft è la versione da riga di comando di Device Manager. Oltre alla versione originale dell'era Win2K / XP disponibile dalla pagina KB, ci sono versioni più recenti (sia a 32 che a 64 bit) disponibili da varie fonti MS, come menzionato in questo articolo Dove trovare DevCon.exe . DevCon.exe per Windows 7 (e probabilmente anche Windows 8) può essere trovato sepolto nell'appropriato Windows Driver Kit (WDK) , come indicato in questo thread (che contiene anche collegamenti per il download dell'eseguibile estratto ).

    devcon status *oppure devcon hwids *oppure devcon findall =usb(per un elenco più compatto) indicare l'ID hardware del dispositivo. Per esempio:

    USB \ VID_0781 e PID_7113 \ 0001162825
    Nome: il
    driver del dispositivo di archiviazione di massa USB è in esecuzione.

    Puoi quindi provare a rimuovere il dispositivo con devcon remove "USB\VID_0781&PID_7113"(i caratteri jolly come * sono consentiti, ma fai attenzione o potresti finire per rimuovere completamente qualcos'altro!)


Qualcuno ha chiesto " Esiste un comando DOS (cmd.exe da Win7) per espellere una chiavetta? " Che purtroppo è stato chiuso come duplicato di questo thread. Tuttavia, la domanda riguardava l'espulsione delle unità USB mentre nella Console di ripristino di Windows / Prompt dei comandi di ripristino del sistema , quindi è improbabile che una delle utilità di cui sopra sia di aiuto. In tale situazione, dovrebbe funzionare il seguente metodo che utilizza Diskpart :

  1. Digitare diskparte attendere il prompt di diskpart ( DISKPART>)

  2. genere list volume

  3. Notare attentamente il numero del volume dell'unità USB (utilizzare le proprietà elencate come lettera dell'unità, etichetta, tipo e dimensione per assistenza)

  4. Digitare select volume <number>, dove si <number>trova il numero del volume indicato sopra

    Diskpart

  5. genere remove all dismount

  6. Digitare exitper uscire da Diskpart

Ora dovresti essere in grado di rimuovere in sicurezza l'unità USB senza temere la perdita di dati.


1
Grazie per aver dedicato del tempo a rispondere alla mia domanda anche dopo che SU l'ha chiusa. Sono andato avanti e ho seguito il suggerimento di Jared Tritsch e ho rimosso l'unità semplicemente rimuovendola. Una volta che avrò di nuovo operativo il laptop, sperimenterò DISKPART. Ecco il link alle specifiche di Microsoft per DISKPART. technet.microsoft.com/en-us/library/bb490893.aspx
zundarz,

2
@zundarz: Prego! Il criterio di rimozione predefinito in Windows per i dispositivi rimovibili è la Rimozione rapida , che disabilita la memorizzazione nella cache di scrittura e consente di rimuovere l'unità senza dover prima rimuoverla in modo sicuro. Vedi questo screenshot per di più. Pertanto, il suggerimento di Jared di strappare l'unità non dovrebbe normalmente causare la perdita di dati se le unità rimovibili vengono trattate allo stesso modo anche nella Console di ripristino di emergenza. Tuttavia, per la massima tranquillità, mi prendo sempre cura di rimuovere ogni unità in sicurezza prima di estrarla. Potrebbe essere un placebo, ma mi impedisce di preoccuparmi. :)
Karan,

PS Stai attento con Diskpart: è potente e quindi abbastanza pericoloso. Il motivo per cui l'ho usato per lo smontaggio dell'unità è perché è disponibile sia nella console di ripristino di XP che nel prompt dei comandi / comandi di ripristino del sistema di Vista / 7.
Karan,

Ho provato a utilizzare Diskpartmentre in modalità Windows normale. Questo è il messaggio che ricevo dopo aver eseguito il passaggio 5 sopra. "DiskPart ha rimosso correttamente la lettera dell'unità, ma è necessario riavviare il computer prima che le modifiche abbiano effetto. Diskpart ha disinstallato correttamente il volume." Ho provato a usarlo su un supporto rimovibile (scheda SD) anziché su un dispositivo rimovibile (come il lettore di schede SD o l'unità flash USB). L'indicatore LED sul lettore non si è spento ma è rimasto acceso (cioè ha smesso di lampeggiare come accade di tanto in tanto quando è inserita solo una scheda SD). Quindi immagino che sia sicuro rimuoverlo.
Samir,

3
Per annullare il remove all dismountcomando è necessario utilizzare il mountvolcomando. Per ulteriori informazioni, consultare la libreria Technet qui e anche qui . Dopo averlo utilizzato, mountvolè necessario riavviare per rendere effettive le modifiche. In alternativa, puoi anche utilizzare Gestione disco per assegnare una nuova lettera di unità.
Samir,

17

Per rispondere a questa domanda ... Non hai bisogno di materiale di terze parti.

Con una riga di comando (o PowerShell), come posso dire a Windows di rimuovere automaticamente l'hardware senza l'input dell'utente?

Esegui questo comando: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll per visualizzare la finestra di dialogo Rimozione sicura dell'hardware:

La finestra di dialogo Rimozione sicura dell'hardware


4
Puoi descrivere cosa fa?
canadese Luke REINSTATE MONICA il

1
lanciare la rimozione sicura per usb
climenole il

11
Non dovrò ancora fare clic su qualcosa allora?
Canadian Luke REINSTATE MONICA

2
È piuttosto interessante, ma sfortunatamente ai fini dell'automazione, non è migliore di nessuno dei suggerimenti di Karan.
Synetech,

1
control hotplug.dll , ovvero senza _RunDLL non funziona per me su Vista SP2
user66001

2

Dal momento che è un dispositivo di backup, significa che è un dispositivo di archiviazione, quindi può essere fatto da PowerShell - basta sostituire X: con la lettera di unità desiderata:

$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")

1
Ho visto questa soluzione su serverfault e su stackoverflow , ma sembra che non riesca a farlo funzionare con il mio HDD esterno. Non c'è nessun messaggio di errore, semplicemente non fa nulla. L'uso "F:"o la "F:\"differenza non ha fatto differenza, così come l'esecuzione di PowerShell come amministratore. La rimozione sicura tramite la barra delle applicazioni funziona. Che cosa sto facendo di sbagliato?
flolilo,

L'attuale comando PowerShell non restituisce alcun messaggio di errore (testo rosso)?
Overmind

Se scollego F: \ ed eseguo il comando, viene visualizzato un errore che non è in grado di eseguire un metodo NULL (il messaggio è in tedesco, quindi non sono del tutto sicuro di aver ottenuto la traduzione corretta). Se eseguo i comandi con F: \ collegato, non vi è alcun messaggio - $errorè anche vuoto. A proposito, eseguo PowerShell 5.1 su Win10 Pro. F: \ è un HDD USB esterno che ha solo una partizione (F :) - può essere rimosso senza problemi dalla barra delle applicazioni.
flolilo,

È interessante notare che quando uso un USB-pendrive (anche con una partizione), funziona perfettamente. Entrambi hanno abilitato la Better performanceloro politica di rimozione, anche se ciò non sembra fare alcuna differenza (USB pendrive funziona con entrambe le impostazioni, USB HDD no). Un secondo pendrive che possiedo, inoltre, non mi piace essere espulso tramite il comando PowerShell. Funzionante: Transcend JetFlash 700 (16GB, FAT32), Non funzionante: Seagate Expansion Portable 2015 (4TB, NTFS), Sandisk Extreme (32GB, exFAT). Tutti provati più volte sulla stessa porta USB. Ancora una volta, la rimozione sicura tramite l'icona della barra delle applicazioni funziona sempre.
flolilo,

@flolilolilo ho lo stesso problema ...
Ploni,

1

Secondo questo articolo di 7 tutorial , è possibile abilitare lo scollegamento sicuro impostando "Rimozione rapida". Questo disabiliterà la cache in scrittura per dispositivo , di cui l'impatto sulle prestazioni è "trascurabile"? I loro passaggi per Windows 7 sono di seguito.

( Modifica ) Secondo questo articolo howtogeek , dovresti comunque fare attenzione quando imposti "Rimozione rapida". Ciò disabiliterà la memorizzazione nella cache di scrittura e impedirà quindi la maggior parte dei problemi. Ma alcuni programmi potrebbero ancora scrivere "live", fino a quando non vengono espulsi / rimossi esplicitamente. ( Fine della modifica )

passi:

  • collegare il dispositivo nell'unità USB
  • apri Gestione dispositivi
  • espandi Disk Drives
  • fai clic con il pulsante destro del mouse sull'unità rimovibile, ad esempio "Dispositivo USB Flash Disk USB 2.0".
  • seleziona Proprietà
  • fai clic sulla scheda Politiche
  • abilita "Rimozione rapida" (disabilita "Prestazioni migliori")

( Modifica ) Si noti che è necessario utilizzare Gestione dispositivi per modificare l'impostazione, non può essere eseguito da Esplora file. (Almeno nella mia edizione di Windows 10.)


1
Sembra un'ottima idea per le unità di backup! Sembra che questa sia l'impostazione predefinita (almeno sul mio Seagate BUP Slim BK USB External Drive).
Arvo Bowen,

1
I dispositivi con cache di scrittura abilitata non sono rimovibili rapidamente.
Overmind

1
È possibile impostarlo a livello globale in modo che si applichi a qualsiasi archivio USB collegato in futuro?
DuckMaestro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.