Hapus perangkat USB dari baris perintah

61

Saya sedang membuat skrip cadangan untuk Windows 7, dan tindakan terakhir yang saya ingin lakukan adalah dengan aman "menghapus" drive USB yang dicadangkan. Saya mendapat kesan bahwa memasukkan drive ke port USB yang sama sepanjang waktu akan mempertahankan DEV_ID yang sama (koreksi saya jika saya salah). Dengan baris perintah (atau PowerShell), bagaimana saya bisa memberitahu Windows untuk menghapus perangkat keras secara otomatis tanpa input pengguna?

Sama seperti pemegang tempat, OS lain yang mungkin memiliki cara untuk melakukan ini akan lebih baik untuk diketahui juga.

Luke Kanada REINSTATE MONICA
sumber
5
Saya harus mengakui kekecewaan dengan beberapa "jawaban" di bawah ini yang jelas tidak mengerti apa yang ditanyakan dan memberikan opsi yang jelas tidak berguna untuk tugas otomasi seperti yang diminta.` ಠ_ಠ
Synetech
> Saya mendapat kesan bahwa memasukkan drive ke port USB SAMA sepanjang waktu akan mempertahankan DEV_ID yang sama, koreksi saya jika saya salah. Itu betul. Windows memperlakukan drive dan port yang dicolokkan sebagai pasangan pengenal. Dengan menghubungkannya ke port lain (yang belum pernah dicolokkan), Anda akan memicu fungsi instalasi driver Windows. Lebih buruk lagi, jika Anda telah menetapkan huruf drive non-berturut-turut ke volume, kemudian memasukkannya ke port baru tidak akan mempertahankan huruf itu, dan itu akan mendapatkan huruf berikutnya yang tersedia dan Anda harus menetapkan huruf secara manual lagi.
Synetech
1
(Anehnya, jika Anda mencolokkan drive ke port dan membiarkan Windows menginstal driver untuk itu, kemudian menetapkan huruf drive non-berturut-turut untuk itu, kemudian cabut plug di drive yang berbeda yang dari merek yang sama, model, dan ukuran, maka Windows akan memperlakukannya seolah-olah Anda terhubung ke drive sebelumnya lagi.)
Synetech
Bisakah Anda memperbarui judul menjadi benar. Saya mencari jawaban untuk menghapus USB "perangkat" bukan USB "drive".

Jawaban:

32

RemoveDrive telah membantu saya dengan baik di masa lalu

stijn
sumber
4
Removerive \ x64> RemoveDrive.exe f: -L adalah kode, untuk mereka yang sedang terburu
fedmich
Ini akhirnya bekerja untuk saya. Menariknya, sebuah WqlEventQuery yang saya pasang masih menunggu untuk dinyalakan sampai Anda menarik drive keluar secara fisik. Tidak tahu banyak tentang hal ini, tapi itu mengejutkan saya. Tidak terjadi masalah bagi saya dalam hal ini.
samuelesque
1
RemoveDrive bagus, tetapi masalahnya adalah ia benar-benar menghapus seluruh drive. Untuk pembaca kartu, alih-alih hanya mengeluarkan kartu (seperti mengklik kanan dan memilih Keluarkan dari Komputer Saya), dan memungkinkan Anda untuk menyambungkan kartu yang lain, kartu ini menghilangkan seluruh pembaca kartu, mengharuskannya untuk dicabut secara fisik dan dicabut kembali. dicolokkan, atau lebih buruk, me-reboot jika pembaca kartu terpasang (dimungkinkan untuk melakukannya melalui perangkat lunak tetapi mengganggu).
Synetech
Anda dapat menjalankannya dari cygwin juga.
Kevin Sadler
65

Selain RemoveDrive Uwe Sieber yang disebutkan dalam jawaban lain, ada sejumlah utilitas yang dapat mencapai ini. Daftar kecil berikut:

  • USB Disk Ejector terutama adalah utilitas berbasis GUI tetapi dapat digunakan dengan sama baiknya dari command-line untuk mengeluarkan drive yang menjalankan program, atau drive apa pun dengan menentukan huruf drive / (sebagian) nama drive / mountpoint dll. Sumber gratis dan terbuka.

    Ejector Disk USB

  • USB Safely Remove tidak gratis tetapi merupakan utilitas penghilang disk pada steroid, dengan banyak fitur canggih , termasuk tentu saja dukungan baris perintah . Zentimo adalah saudara lelakinya yang lebih besar, dengan lebih banyak fitur .

    USB Lepas dengan Aman

  • Microsoft DevCon sendiri adalah versi baris perintah dari Device Manager. Selain versi asli Win2K / XP-era yang tersedia dari halaman KB, ada rilis yang lebih baru (baik 32 dan 64-bit) yang tersedia dari berbagai sumber MS sebagaimana disebutkan dalam artikel Where to find DevCon.exe ini. DevCon.exe untuk Windows 7 (dan mungkin juga Windows 8) dapat ditemukan terkubur dalam Windows Driver Kit (WDK) yang sesuai, sebagaimana disebutkan dalam utas ini (yang juga berisi tautan unduhan ke executable yang diekstrak ).

    devcon status *atau devcon hwids *atau devcon findall =usb(untuk daftar yang lebih ringkas) akan memberi tahu Anda ID perangkat keras perangkat. Sebagai contoh:

    USB \ VID_0781 & PID_7113 \ 0001162825
    Nama:
    Driver Perangkat Penyimpanan Massal USB sedang berjalan.

    Anda kemudian dapat mencoba menghapus perangkat dengan devcon remove "USB\VID_0781&PID_7113"(wildcard seperti * diperbolehkan, tetapi hati-hati atau Anda mungkin akhirnya menghapus sesuatu yang lain sama sekali!)


Seseorang bertanya " Apakah ada perintah DOS prompt (cmd.exe dari Win7) untuk mengeluarkan thumb drive? " Yang sayangnya ditutup sebagai duplikat dari utas ini. Namun, pertanyaannya adalah tentang mengeluarkan drive USB saat berada di Windows Recovery Console / System Recovery Command Prompt , jadi sepertinya tidak ada utilitas di atas yang akan membantu. Dalam situasi seperti itu, metode berikut menggunakan Diskpart akan berfungsi:

  1. Ketik diskpartdan tunggu prompt diskpart ( DISKPART>)

  2. Tipe list volume

  3. Catat nomor volume drive USB dengan hati-hati (gunakan properti yang tercantum seperti huruf drive, label, jenis dan ukuran untuk bantuan)

  4. Ketik select volume <number>, di mana <number>nomor volume dicatat di atas

    Diskpart

  5. Tipe remove all dismount

  6. Ketik exituntuk keluar dari Diskpart

Sekarang Anda harus dapat menghapus drive USB dengan aman tanpa takut kehilangan data.

Karan
sumber
1
Terima kasih telah meluangkan waktu untuk menanggapi pertanyaan saya bahkan setelah SU menutupnya. Saya melanjutkan dan menindaklanjuti saran Jared Tritsch dan menghapus drive hanya dengan menghapusnya. Setelah saya mengoperasikan laptop lagi, saya akan bereksperimen dengan DISKPART. Berikut tautan ke Spesifikasi Microsoft untuk DISKPART. technet.microsoft.com/en-us/library/bb490893.aspx
zundarz
2
@zundarz: Sama-sama! Kebijakan Penghapusan default di Windows untuk perangkat yang dapat dilepas adalah Penghapusan cepat , yang menonaktifkan cache tulis dan memungkinkan seseorang untuk menghapus drive tanpa harus menghapusnya dengan aman terlebih dahulu. Lihat screenshot ini untuk lebih lanjut. Jadi saran Jared tentang menarik drive tidak seharusnya menyebabkan hilangnya data jika drive yang dapat dilepas diperlakukan dengan cara yang sama di Konsol Pemulihan juga. Namun, untuk ketenangan pikiran saya selalu berhati-hati untuk menghapus setiap drive sebelum menariknya keluar. Mungkin menjadi plasebo, tetapi membuat saya tidak khawatir. :)
Karan
PS Hati-hati dengan Diskpart - kuat dan karenanya cukup berbahaya. Alasan saya menggunakannya untuk drive turun dari drive adalah karena tersedia dari kedua XP's Recovery Console dan Vista / 7's System Recovery Options / Command Prompt.
Karan
Saya mencoba menggunakan Diskpartsaat dalam mode Windows normal. Ini adalah pesan yang saya dapatkan setelah melakukan langkah 5 di atas. "DiskPart berhasil menghapus huruf drive, tetapi komputer Anda harus di-boot ulang sebelum perubahan berlaku. Diskpart berhasil menurunkan volume." Saya mencoba menggunakannya pada media yang dapat dilepas (kartu SD) daripada perangkat yang dapat dilepas (seperti pembaca kartu SD atau USB flash drive). Indikator LED pada pembaca tidak mati tetapi tetap menyala (yaitu berhenti berkedip seperti yang kadang-kadang terjadi ketika kartu SD hanya duduk di dalamnya). Jadi saya kira aman untuk dihapus.
Samir
3
Untuk membatalkan yang remove all dismountperintah Anda harus menggunakan mountvolperintah. Untuk informasi lebih lanjut lihat perpustakaan Technet di sini dan juga di sini . Setelah digunakan, mountvolAnda harus mem-boot ulang agar perubahan diterapkan. Atau, Anda juga dapat menggunakan Manajemen Disk untuk menetapkan huruf drive baru.
Samir
17

Untuk menjawab pertanyaan ini ... Anda tidak perlu barang pihak ketiga.

Dengan Command Line (atau PowerShell), bagaimana saya bisa memberitahu Windows untuk menghapus perangkat keras secara otomatis tanpa input pengguna?

Jalankan perintah ini: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll untuk membuka kotak dialog Safely Remove Hardware:

Dialog Perangkat Keras yang Aman

Climenole
sumber
4
Bisakah Anda menjelaskan apa fungsinya?
Luke Kanada REINSTATE MONICA
1
luncurkan penghapusan aman untuk usb
climenole
11
Bukankah saya masih perlu mengklik sesuatu?
Luke Kanada REINSTATE MONICA
2
Ini sangat keren, tapi sayangnya untuk tujuan otomatisasi, tidak lebih baik dari saran Karan.
Synetech
1
mengontrol hotplug.dll , yaitu, tanpa _RunDLL tidak berfungsi untuk saya di Vista SP2
user66001
2

Karena ini adalah perangkat cadangan, itu berarti perangkat penyimpanan, oleh karena itu dapat dilakukan dari PowerShell - cukup ganti X: dengan huruf drive yang Anda inginkan:

$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")
Overmind
sumber
1
Saya telah melihat solusi ini pada serverfault dan juga pada stackoverflow , tetapi saya tampaknya tidak dapat membuatnya bekerja dengan HDD eksternal saya. Tidak ada pesan kesalahan, itu tidak melakukan apa-apa. Menggunakan "F:"atau "F:\"tidak membuat perbedaan, seperti menjalankan PowerShell sebagai admin. Menghapus secara aman melalui Taskbar berfungsi. Apa yang saya lakukan salah?
flolilo
Perintah powershell yang sebenarnya tidak mengembalikan pesan kesalahan (teks merah)?
Overmind
Jika saya mencabut F: \ dan menjalankan perintah, saya mendapatkan kesalahan bahwa saya tidak dapat menjalankan metode yang NULL (pesannya dalam bahasa Jerman, jadi saya tidak sepenuhnya yakin bahwa saya mendapat terjemahan yang benar). Jika saya menjalankan perintah dengan F: \ dicolokkan, tidak ada pesan sama sekali - $errorjuga kosong. Saya menjalankan PowerShell 5.1 pada Win10 Pro. F: \ adalah HDD USB eksternal yang hanya memiliki satu partisi (F :) - dapat dihapus dengan aman melalui taskbar tanpa masalah.
flolilo
Menariknya, ketika saya menggunakan USB-flashdisk (juga dengan satu partisi), ia bekerja dengan sempurna. Keduanya telah mengaktifkan Better performancekebijakan penghapusan, meskipun sepertinya tidak membuat perbedaan (USB flashdisk berfungsi dengan kedua pengaturan, HDD USB tidak). Flashdisk kedua yang saya miliki juga tidak suka dikeluarkan melalui perintah PowerShell. Bekerja: Transcend JetFlash 700 (16GB, FAT32), Tidak berfungsi: Seagate Expansion Portable 2015 (4TB, NTFS), Sandisk Extreme (32GB, exFAT). Semua mencoba beberapa kali pada port USB yang sama. Sekali lagi, menghapus dengan aman melalui ikon Taskbar selalu berhasil.
flolilo
@ flolilolilo saya punya masalah yang sama ...
Ploni
1

Menurut artikel 7tutorials ini , Anda dapat mengaktifkan pencabutan aman dengan mengatur "Penghapusan cepat". Ini akan menonaktifkan cache tulis per perangkat , yang dampak kinerjanya "dapat diabaikan"? Langkah-langkah mereka untuk Windows 7 di bawah ini.

( Sunting ) Menurut artikel howtogeek ini , Anda harus tetap berhati-hati saat mengatur "Penghapusan cepat". Ini akan menonaktifkan cache tulis, dan karenanya akan mencegah sebagian besar masalah. Tetapi beberapa program mungkin masih menulis hal-hal 'hidup', sampai secara eksplisit dikeluarkan / dihapus. ( Akhir suntingan )

Langkah:

  • pasang perangkat di drive USB
  • buka Device Manager
  • perluas Drive Disk
  • klik kanan drive yang dapat dilepas, mis. "USB2.0 Flash Disk USB Device."
  • pilih Properties
  • klik tab Kebijakan
  • aktifkan "Penghapusan cepat" (nonaktifkan "Kinerja lebih baik")

( Edit ) Perhatikan bahwa Anda perlu menggunakan Device Manager untuk mengubah pengaturan, itu tidak dapat dilakukan dari File Explorer. (Setidaknya dalam edisi Windows 10 saya.)

Yahoo Serius
sumber
1
Ini terdengar seperti ide bagus untuk drive cadangan! Sepertinya ini adalah pengaturan default (Setidaknya pada saya Seagate BUP Slim BK USB External Drive).
Arvo Bowen
1
Perangkat dengan cache yang diaktifkan tidak dapat dilepas dengan cepat.
Overmind
1
Kemungkinan untuk mengatur ini secara global sehingga ini berlaku untuk setiap dan semua penyimpanan USB yang terpasang di masa depan?
DuckMaestro