Supprimer le périphérique USB de la ligne de commande

61

Je suis en train de construire un script de sauvegarde pour Windows 7, et la dernière action que je souhaite effectuer consiste à "supprimer" en toute sécurité le lecteur USB sur lequel il est en train de sauvegarder. J'ai l'impression que le fait de brancher le lecteur sur le même port USB tout le temps conservera le même DEV_ID (corrigez-moi si je me trompe). Avec une ligne de commande (ou PowerShell), comment puis-je dire à Windows de supprimer automatiquement le matériel en toute sécurité, sans intervention de l'utilisateur?

En tant que titulaire de réservation, il serait bon de connaître d’autres systèmes d’exploitation pouvant le faire.

Canadien Luke REINSTATE MONICA
la source
5
Je dois admettre que certaines des «réponses» ci-dessous, qui ne comprenaient manifestement pas ce qui était demandé et offraient des options manifestement inutiles pour l'automatisation demandée
déçu
> J'ai l'impression que le fait de brancher le lecteur sur le même port USB gardera toujours le même DEV_ID, corrigez-moi si je me trompe. C'est correct. Windows traite un lecteur et le port auquel il est connecté comme une paire d'identification. En le branchant sur un autre port (sur lequel il n'a jamais été branché), vous allez activer la fonction d'installation du pilote de Windows. Pire encore, si vous avez attribué une lettre de lecteur non consécutive au volume, le fait de le brancher sur un nouveau port ne conservera pas cette lettre, il recevra la prochaine lettre disponible et vous devrez attribuer à nouveau une lettre manuellement.
Synetech
1
(Étrangement, si vous connectez un lecteur à un port et laissez Windows installer les pilotes correspondants, puis lui affectez une lettre de lecteur non consécutive, puis débranchez-le et branchez-le dans un lecteur différent de la même marque, du même modèle, et la taille, alors Windows le traitera exactement comme si vous aviez branché le lecteur précédent à nouveau.)
Synetech
Pourriez-vous mettre à jour le titre pour être correct. Je cherchais des réponses sur la suppression des "périphériques" USB et non des "lecteurs" USB.

Réponses:

32

RemoveDrive m'a bien servi par le passé

Stijn
la source
4
removerive \ x64> RemoveDrive.exe f: -L est le code, pour ceux qui sont pressés
fedmich
Cela a fini par travailler pour moi. Fait intéressant, un WqlEventQuery que j'ai câblé attend toujours de tirer jusqu'à ce que vous retiriez physiquement le lecteur. Je ne sais pas une tonne de ce genre de choses, mais ça m'a surpris. Ce n'est pas un problème pour moi dans ce cas.
samuelesque
1
RemoveDrive est bon, mais le problème est qu'il supprime en fait le lecteur entier. Pour les lecteurs de carte, au lieu de simplement éjecter la carte (comme cliquer avec le bouton droit de la souris et sélectionner Éjecter de mon ordinateur) et vous permettre de vous en brancher une autre, cela supprime l’ensemble du lecteur de carte, l’obligeant à le débrancher physiquement et à le rebrancher. branché, ou pire, redémarrage si le lecteur de carte est intégré (il est possible de le faire via un logiciel, mais c'est ennuyant).
Synetech
Vous pouvez aussi l'exécuter depuis cygwin.
Kevin Sadler
65

Outre RemoveDrive de Uwe Sieber mentionné dans l’autre réponse, de nombreux utilitaires peuvent le faire. Une petite liste suit:

  • USB Disk Ejector est principalement un utilitaire basé sur une interface graphique, mais peut également être utilisé à partir de la ligne de commande pour éjecter le lecteur à partir duquel le programme est exécuté, ou de tout lecteur en spécifiant la lettre de lecteur / nom (partiel) du lecteur / point de montage, etc. Source libre et ouverte.

    Éjecteur de disque USB

  • USB Safely Remove n’est pas gratuit, mais c’est un utilitaire de suppression de disque sous steroids, doté de nombreuses fonctionnalités avancées , dont bien sûr une prise en charge en ligne de commande . Zentimo est son grand frère, avec encore plus de fonctionnalités .

    USB Retirer en toute sécurité

  • La propre DevCon de Microsoft est la version en ligne de commande de Device Manager. Outre la version d'origine de Win2K / XP disponible sur la page de la Base de connaissances , il existe des versions plus récentes (32 et 64 bits) disponibles auprès de diverses sources MS, comme indiqué dans cet article Où trouver DevCon.exe . DevCon.exe pour Windows 7 (et probablement aussi pour Windows 8) peut être trouvé enterré dans le kit de pilotes Windows (WDK) approprié , comme indiqué dans ce fil (qui contient également des liens de téléchargement vers l' exécutable extrait ).

    devcon status *ou devcon hwids *ou devcon findall =usb(pour une liste plus compacte) devrait vous indiquer l'ID matériel du périphérique. Par exemple:

    USB \ VID_0781 & PID_7113 \ 0001162825
    Nom: Le
    pilote de périphérique de stockage de masse USB est en cours d'exécution.

    Vous pouvez ensuite essayer de supprimer le périphérique avec devcon remove "USB\VID_0781&PID_7113"(les caractères génériques tels que * sont autorisés, mais soyez prudent, sinon vous pourriez supprimer quelque chose d'autre!)


Quelqu'un a demandé " Existe-t-il une commande d'invite DOS (cmd.exe à partir de Win7) pour éjecter une clé USB? ", Qui a malheureusement été fermée en tant que duplicata de ce fil. Cependant, la question concernait l’éjection de lecteurs USB lors de l’ invite de commande de la console de récupération Windows / Récupération système . Il est donc peu probable que l’un des utilitaires ci-dessus vous aide. Dans une telle situation, la méthode suivante utilisant Diskpart devrait fonctionner:

  1. Tapez diskpartet attendez l'invite diskpart ( DISKPART>)

  2. Type list volume

  3. Notez soigneusement le numéro de volume du lecteur USB (utilisez les propriétés répertoriées telles que la lettre du lecteur, l'étiquette, le type et la taille pour obtenir de l'aide).

  4. Type select volume <number>, où <number>est le numéro de volume noté ci-dessus

    Diskpart

  5. Type remove all dismount

  6. Tapez exitpour quitter Diskpart

Vous devriez maintenant pouvoir retirer en toute sécurité votre clé USB sans craindre la perte de données.

Karan
la source
1
Merci d’avoir pris le temps de répondre à ma question même après sa fermeture. Je suis allé de l'avant et j'ai agi sur la suggestion de Jared Tritsch et j'ai retiré le lecteur simplement en le retirant. Une fois que mon ordinateur portable sera à nouveau opérationnel, je ferai des essais avec DISKPART. Voici le lien vers les spécifications de Microsoft pour DISKPART. technet.microsoft.com/en-us/library/bb490893.aspx
zundarz
2
@zundarz: de rien! La politique de suppression par défaut de Windows pour les périphériques amovibles est la suppression rapide , qui désactive la mise en cache des écritures et permet de retirer le lecteur sans avoir à le supprimer en toute sécurité. Voir cette capture d' écran pour plus. Ainsi, la suggestion de Jared de retirer le lecteur ne devrait normalement pas causer de perte de données si les lecteurs amovibles sont également traités de la même manière dans la console de récupération. Néanmoins, pour votre tranquillité d'esprit, je veille à toujours retirer chaque disque en toute sécurité avant de le retirer. Peut-être un placebo, mais m'empêche de m'inquiéter. :)
Karan
PS Soyez prudent avec Diskpart - il est puissant et donc assez dangereux. La raison pour laquelle je l'ai utilisé pour le démontage de disque est qu'il est disponible à partir de la console de récupération XP et des options de récupération système / invite de commande de Vista / 7.
Karan
J'ai essayé d'utiliser Diskparten mode Windows normal. C'est le message que je reçois après avoir exécuté l'étape 5 ci-dessus. "DiskPart a correctement supprimé la lettre de lecteur, mais votre ordinateur doit être redémarré avant que les modifications ne prennent effet. Diskpart a démonté le volume avec succès." J'ai essayé de l'utiliser sur un support amovible (carte SD) plutôt que sur un périphérique amovible (tel qu'un lecteur de carte SD ou une clé USB). Le voyant DEL du lecteur ne s’est pas éteint mais il est resté allumé (c’est-à-dire qu’il a cessé de clignoter comme c’est parfois le cas quand une carte SD n’y repose que). Donc, je suppose qu'il est prudent d'enlever alors.
Samir
3
Pour annuler la remove all dismountcommande, vous devez utiliser la mountvolcommande. Pour plus d'informations, voir la bibliothèque Technet ici et aussi ici . Après avoir utilisé, mountvolvous devez redémarrer pour que les modifications prennent effet. Vous pouvez également utiliser Gestion des disques pour attribuer une nouvelle lettre de lecteur.
Samir
17

Pour répondre à cette question ... Vous n'avez pas besoin de trucs de tiers.

Avec une ligne de commande (ou PowerShell), comment puis-je demander à Windows de supprimer automatiquement le matériel en toute sécurité, sans intervention de l'utilisateur?

Exécutez cette commande: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll pour afficher la boîte de dialogue Supprimer le périphérique en toute sécurité:

La boîte de dialogue Supprimer le matériel en toute sécurité

climenole
la source
4
Pouvez-vous décrire ce que cela fait?
Canadien Luke REINSTATE MONICA
1
lance le retrait sécurisé pour usb
climenole
11
Est-ce que je n'aurai toujours pas besoin de cliquer sur quelque chose alors?
Canadien Luke REINSTATE MONICA
2
C'est assez cool, mais malheureusement pour des raisons d'automatisation, ce n'est pas mieux que toutes les suggestions de Karan.
Synetech
1
contrôle hotplug.dll , c'est-à-dire sans _RunDLL ne fonctionne pas pour moi sur Vista SP2
utilisateur66001
2

Puisqu'il s'agit d'un périphérique de sauvegarde, cela signifie qu'il s'agit d'un périphérique de stockage. Par conséquent, vous pouvez le faire à partir de powershell. Il suffit de remplacer X: par la lettre de votre choix:

$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")
Surmente
la source
1
J'ai vu cette solution sur serverfault ainsi que sur stackoverflow , mais il me semble impossible de la faire fonctionner avec mon disque dur externe. Il n'y a pas de message d'erreur, cela ne fait rien. Utiliser "F:"ou "F:\"ne faisait aucune différence, de même que l'exécution de PowerShell en tant qu'administrateur. La suppression en toute sécurité via la barre des tâches fonctionne. Qu'est-ce que je fais mal?
Flolilo
La commande Powershell actuelle ne renvoie aucun message d'erreur (texte en rouge)?
Overmind
Si je débranche F: \ et exécute la commande, j'obtiens un message d'erreur indiquant que je ne peux pas exécuter une méthode NULL (le message est en allemand, je ne suis donc pas tout à fait sûr d'avoir la traduction correcte). Si je lance les commandes avec F: \ branché, il n'y a pas de message du tout - $errorest vide aussi. Au fait, j'utilise PowerShell 5.1 sur Win10 Pro. F: \ est un disque dur USB externe comportant une seule partition (F :) - il peut être retiré en toute sécurité via la barre des tâches sans problèmes.
Flolilo
Fait intéressant, lorsque j'utilise une clé USB (également avec une partition), cela fonctionne parfaitement. Les deux ont activé Better performanceleur politique de suppression, bien que cela ne semble pas faire de différence (la clé USB fonctionne avec les deux paramètres, mais le disque dur USB ne le fait pas). Une deuxième clé USB que je possède n'aime pas non plus être éjectée via la commande PowerShell. Fonctionnement: Transcend JetFlash 700 (16 Go, FAT32), Ne fonctionne pas: Seagate Expansion Portable 2015 (4 To, NTFS), Sandisk Extreme (32 Go, exFAT). Tous ont essayé plusieurs fois sur le même port USB. Encore une fois, supprimer en toute sécurité via la barre des tâches-icône fonctionne toujours.
Flolilo
@flolilolilo j'ai le même problème ...
Ploni
1

Selon cet article 7tutorials , vous pouvez activer le débranchement sans danger en sélectionnant " Retrait rapide". Cela désactivera la mise en cache en écriture par périphérique , pour lequel l'impact sur les performances est "négligeable"? Leurs étapes pour Windows 7 sont ci-dessous.

( Éditer ) Selon cet article de howtogeek , vous devriez toujours faire attention en paramétrant " Retrait rapide". Cela désactivera la mise en cache en écriture et évitera ainsi la plupart des problèmes. Mais certains programmes peuvent toujours écrire des choses «en direct», jusqu'à ce qu'ils soient explicitement éjectés / supprimés. ( Fin de l'édition )

Pas:

  • branchez l'appareil dans la clé USB
  • ouvrir le Gestionnaire de périphériques
  • expand lecteurs de disque
  • Cliquez avec le bouton droit sur votre lecteur amovible, par exemple, "USB2.0 Flash Disk USB Device".
  • sélectionnez Propriétés
  • cliquez sur l'onglet Politiques
  • activer "Retrait rapide" (désactiver "Meilleures performances")

( Modifier ) Notez que vous devez utiliser le Gestionnaire de périphériques pour modifier le paramètre. Cela ne peut pas être effectué à partir de l’explorateur de fichiers. (Au moins dans mon édition de Windows 10).

Yahoo Sérieux
la source
1
Cela semble être une excellente idée pour les lecteurs de sauvegarde! Il semble que ce soit le paramètre par défaut cependant (au moins sur mon Seagate BUP Slim BK USB External Drive).
Arvo Bowen
1
Les périphériques sur lesquels le cache en écriture est activé ne peuvent pas être rapidement retirés.
Overmind
1
Possible de définir cela globalement de manière à ce qu'il s'applique à tout stockage USB connecté dans le futur?
DuckMaestro