Je construis un script de sauvegarde pour Windows 7, et la dernière action que je veux que cela exécute consiste à supprimer en toute sécurité le lecteur USB auquel il est sauvegardé. J'ai l'impression que le fait de brancher le lecteur dans le même port USB tout le temps gardera 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 en toute sécurité le matériel automatiquement sans l'entrée de l'utilisateur?
Tout comme un détenteur de place, d'autres systèmes d'exploitation qui pourraient avoir une façon de le faire seraient excellents à connaître également.
RemoveDrive m'a bien servi dans le passé
Outre le RemoveDrive d' Uwe Sieber mentionné dans l'autre réponse, il y a toute une gamme d'utilitaires qui peuvent y parvenir. Une petite liste suit:
L'éjecteur de disque USB est avant tout un utilitaire basé sur l'interface graphique, mais peut être utilisé aussi bien à partir de la ligne de commande pour éjecter le lecteur sur lequel le programme fonctionne, ou tout lecteur en spécifiant la lettre du lecteur / (partiel) le nom du lecteur / le point de montage, etc. Gratuit et open source.
USB Safely Remove n'est pas gratuit, mais il s'agit d'un utilitaire de suppression de disque sur les stéroïdes, avec de nombreuses fonctionnalités avancées , y compris bien sûr, la ligne de commande . Zentimo est son plus grand frère, avec encore plus de fonctionnalités .
Le DevCon de Microsoft est la version de ligne de commande de Device Manager. En plus de la version originale Win2K / XP-era disponible à partir de la page KB, il existe des versions plus récentes (à la fois 32 et 64 bits) disponibles auprès de diverses sources MS telles que mentionnées dans cet article. Pour trouver l' article DevCon.exe . DevCon.exe pour Windows 7 (et probablement Windows 8) peut être trouvé enterré dans le kit de pilote de Windows approprié (WDK) , comme mentionné dans ce thread (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'identification matérielle du périphérique. Par exemple:
USB \ VID_0781 & PID_7113 \ 0001162825
Nom: périphérique de stockage de masse USB
Le pilote 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 comme * sont autorisés, mais soyez prudent ou vous risquez de supprimer tout autre chose!)
Quelqu'un a demandé " Existe-t-il une commande de DOS (cmd.exe de Win7) pour éjecter un lecteur de pouce? " Qui a malheureusement été fermé comme un double de ce thread. Cependant, la question concernait l'éjection de disques USB pendant la consigne de récupération de Windows / la consigne de système de récupération , il est donc peu probable que l'un des utilitaires ci-dessus vous aidera. Dans une telle situation, la méthode suivante utilisant Diskpart devrait fonctionner:
Tapez diskpart
et attendez l'invite DISKPART>
( DISKPART>
)
list volume
types
Notez le numéro de volume du lecteur USB avec soin (utilisez les propriétés listées telles que la lettre de lecteur, l'étiquette, le type et la taille pour obtenir de l'aide)
Tapez le select volume <number>
, où <number>
est le numéro de volume noté ci-dessus
Type remove all dismount
Saisissez exit
pour quitter Diskpart
Maintenant, vous devriez pouvoir retirer votre clé USB en toute sécurité sans crainte de perte de données.
Avec une ligne de commande (ou PowerShell), comment puis-je dire à Windows de supprimer en toute sécurité le matériel automatiquement sans l'entrée de l'utilisateur?
Pour répondre à cette question … Vous n'avez pas besoin de matériel tiers.
Exécutez cette commande: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll
Selon cet article , vous pouvez activer le débranchement sécurisé en définissant "Quick removal". Cela désactivera la mise en cache d'écriture par périphérique , dont l'impact sur la performance est «négligeable»? Leurs étapes pour Windows 7 sont ci-dessous.
( Éditer ) Selon cet article , vous devriez toujours faire attention lors du réglage rapide. Cela désactivera la mise en cache des écritures et empêchera ainsi la plupart des problèmes. Mais certains programmes peuvent encore écrire des éléments «en direct», jusqu'à ce qu'il soit explicitement éjecté / supprimé. ( Fin de l'édition )
Pas:
( Modifier ) Notez que vous devez utiliser le Gestionnaire de périphériques pour modifier le paramètre, il ne peut pas être fait à partir de l'Explorateur de fichiers. (Au moins dans mon édition Windows 10).
Comme il s'agit d'un périphérique de sauvegarde, cela signifie qu'il s'agit d'un périphérique de stockage, donc il peut être fait à partir de powershell – Remplacez simplement X: par la lettre de lecteur souhaitée:
$driveEject = New-Object -comObject Shell.Application $driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")