54

Я создаю сценарий резервного копирования для Windows 7, и последнее действие, которое я хочу выполнить, - это безопасно "извлечь" USB-накопитель, на который он выполняет резервное копирование. У меня сложилось впечатление, что при постоянном подключении накопителя к одному и тому же порту USB будет сохраняться один и тот же DEV_ID (поправьте меня, если я ошибаюсь). С помощью командной строки (или PowerShell), как я могу сказать Windows, чтобы безопасно удалить оборудование автоматически без участия пользователя?

Точно так же было бы полезно знать о других ОС, у которых есть способ сделать это.

5 ответов5

60

Помимо RemoveDrive Уве Зибера, упомянутого в другом ответе, существует целый ряд утилит, которые могут это сделать. Вот небольшой список:

  • USB Disk Ejector - это, прежде всего, утилита на основе графического интерфейса, но она может использоваться с равной эффективностью из командной строки для извлечения диска, с которого запускается программа, или любого диска, указав букву диска / (частичное) имя диска / точку подключения и т.д. Бесплатный и открытый исходный код.

    USB дисковый эжектор

  • USB Safely Remove не бесплатен, но это утилита для удаления дисков на стероидах, с множеством расширенных функций, включая, конечно, поддержку командной строки. Zentimo - его старший брат, с еще большим количеством функций.

    USB безопасно удалить

  • Microsoft DevCon - это версия диспетчера устройств для командной строки. Помимо исходной версии эпохи Windows 2000 / XP, доступной на странице базы знаний, существуют более новые версии (как 32-разрядные, так и 64-разрядные), доступные из различных источников MS, как упомянуто в этой статье « Где найти DevCon.exe». DevCon.exe для Windows 7 (и, возможно, также для Windows 8) находится в соответствующем наборе драйверов Windows (WDK), как указано в этой теме (который также содержит ссылки для загрузки извлеченного исполняемого файла).

    devcon status * или devcon hwids * или devcon findall =usb (для более компактного списка) должны сообщить вам аппаратный идентификатор устройства. Например:

    USB\VID_0781 & PID_7113\0001162825
    Имя: USB-накопитель
    Драйвер работает.

    Затем вы можете попробовать удалить устройство с помощью devcon remove "USB\VID_0781&PID_7113" (подстановочные знаки, подобные *, разрешены, но будьте осторожны, иначе вы можете полностью удалить что-то еще!)


Кто-то спросил:« Существует ли команда DOS (cmd.exe из Win7) для извлечения флэш-накопителя?"который был к сожалению закрыт как дубликат этой темы. Однако вопрос был об извлечении USB-накопителей во время работы в консоли восстановления Windows / командной строке восстановления системы, поэтому вряд ли какая-либо из приведенных выше утилит поможет. В такой ситуации должен работать следующий метод с использованием Diskpart :

  1. Введите diskpart и дождитесь приглашения diskpart (DISKPART>)

  2. Тип list volume

  3. Внимательно запишите номер тома USB-накопителя (для справки используйте перечисленные свойства, такие как буква диска, метка, тип и размер)

  4. Введите select volume <number> , где <number> - номер тома, указанный выше

    Diskpart

  5. Типа remove all dismount

  6. Введите exit чтобы выйти из Diskpart

Теперь вы сможете безопасно удалить USB-накопитель, не опасаясь потери данных.

30

RemoveDrive хорошо послужил мне в прошлом

13

Чтобы ответить на этот вопрос ... Вам не нужны сторонние вещи.

С помощью командной строки (или PowerShell), как я могу сказать Windows, чтобы безопасно удалить оборудование автоматически без участия пользователя?

Выполните эту команду: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll чтобы открыть диалоговое окно Безопасное извлечение оборудования:

Диалоговое окно «Безопасное извлечение устройства»

2

Поскольку это устройство резервного копирования, это означает, что это устройство хранения, поэтому это можно сделать из powershell - просто замените X: на желаемую букву диска:

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

Согласно этой статье-учебникам, вы можете включить безопасное отключение, установив "Быстрое удаление". Это отключит кеширование записи для каждого устройства, влияние на производительность которого "незначительно"? Их шаги для Windows 7 ниже.

(Правка) В соответствии с этой статьей, вы должны быть осторожны при установке "Быстрое удаление". Это отключит кэширование записи и, таким образом, предотвратит большинство проблем. Но некоторые программы могут по-прежнему писать материал "вживую", пока он не будет извлечен / удален. (Конец редактирования)

шаги:

  • подключите устройство к USB-накопителю
  • открыть диспетчер устройств
  • расширить дисководы
  • щелкните правой кнопкой мыши на съемном носителе, например, «USB2.0 Flash Disk USB Device».
  • выберите Свойства
  • щелкните вкладку Policies
  • включить "Быстрое удаление" (отключить "Лучшая производительность")

(Изменить) Обратите внимание, что вам нужно использовать диспетчер устройств, чтобы изменить настройку, это не может быть сделано из проводника. (По крайней мере, в моем выпуске Windows 10.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .