명령 줄에서 USB 장치 제거


61

Windows 7 용 백업 스크립트를 작성 중이며 마지막으로 수행하려는 작업은 백업중인 USB 드라이브를 안전하게 "제거"하는 것입니다. 드라이브를 항상 동일한 USB 포트에 꽂으면 동일한 DEV_ID가 유지된다는 인상을 받고 있습니다 (잘못된 경우 수정). 명령 줄 (또는 PowerShell)을 사용하여 Windows에서 사용자 입력없이 하드웨어를 자동으로 안전하게 제거하도록하려면 어떻게해야합니까?

자리 표시 자처럼이 작업을 수행 할 수있는 다른 OS도 아는 것이 좋습니다.


5
아래 질문에 대한 답을 명확하게 이해하지 못했고 요청에 따라 자동화 작업에 쓸모없는 옵션을 제공 한 아래의“답변”에 대한 실망을 인정해야합니다 .` ಠ_ಠ
Synetech

> 드라이브를 항상 동일한 USB 포트에 꽂아도 동일한 DEV_ID가 유지된다고 생각합니다. 틀린 경우 수정하십시오. 맞아요. Windows는 드라이브와 연결된 포트를 식별 쌍으로 취급합니다. 다른 포트에 꽂으면 (플러그 된 적이없는) Windows의 드라이버 설치 기능이 트리거됩니다. 더 나쁘지 않은 경우, 비 연속 드라이브 문자를 볼륨에 할당 한 경우 새 포트에 연결하면 해당 문자가 유지되지 않으며 다음으로 사용 가능한 문자가 표시되므로 수동으로 문자를 다시 지정해야합니다.
Synetech

1
(이상하게도, 드라이브를 포트에 꽂고 Windows가 드라이버를 설치하게 한 경우 비 연속 드라이브 문자를 할당 한 다음 동일한 제조업체, 모델, 다른 드라이브 의 플러그를 뽑으십시오. 크기에 따라 Windows는 이전 드라이브를 다시 연결 한 것처럼 정확하게 처리합니다.)
Synetech

제목을 올바르게 업데이트 할 수 있습니다. USB "드라이브"가 아닌 USB "장치"제거에 대한 답변을 찾고있었습니다.

답변:


32

RemoveDrive 는 과거에 나에게 잘 봉사했습니다.


4
removedrive \ x64> RemoveDrive.exe f : -L 은 급한 사람들을위한 코드입니다.
fedmich

이것은 나를 위해 일하게되었습니다. 흥미롭게도 내가 연결 한 WqlEventQuery는 드라이브를 물리적으로 꺼낼 때까지 계속 실행됩니다. 이 물건에 대해 많은 것을 알지 못했지만 놀랐습니다. 이 경우 나에게 문제가되지 않습니다.
samuelesque

1
RemoveDrive는 양호하지만 문제는 실제로 전체 드라이브를 제거한다는 것입니다. 카드 판독기의 경우 마우스 오른쪽 버튼을 클릭하고 내 컴퓨터에서 꺼내기를 선택하는 등 단순히 카드를 꺼내고 다른 전원을 꽂는 대신 카드 판독기 전체를 ​​제거하여 물리적으로 분리하고 다시 연결해야합니다. 카드 리더가 내장되어 있으면 재부팅되거나 재부팅됩니다 (소프트웨어를 통해 할 수는 있지만 성가시다).
Synetech

cygwin에서도 실행할 수 있습니다.
Kevin Sadler

65

다른 답변에서 언급 한 Uwe Sieber의 RemoveDrive 외에도 이를 수행 할 수있는 유틸리티가 많이 있습니다. 작은 목록은 다음과 같습니다.

  • USB 디스크 추출기 는 기본적으로 GUI 기반 유틸리티이지만 명령 줄에서 동일하게 사용하여 프로그램이 실행중인 드라이브 또는 드라이브 문자 / (부분) 드라이브 이름 / 마운트 포인트 등을 지정하여 모든 드라이브를 추출 할 수 있습니다. 무료 및 오픈 소스.

    USB 디스크 이젝터

  • USB Safely Remove 는 무료가 아니지만물론 명령 줄 지원을 포함하여많은 고급 기능을 갖춘 스테로이드의 디스크 제거 유틸리티입니다. Zentimo는 더불어 그것의 더 큰 형제기능 .

    USB 안전하게 제거

  • Microsoft 자체의 DevCon 은 장치 관리자의 명령 줄 버전입니다. KB 페이지에서 사용할 수있는 원본 Win2K / XP 시대 버전 외에도이 DevCon.exe를 찾을 수있는 곳 기사에 언급 된대로 다양한 MS 소스에서 제공되는 최신 릴리스 (32 및 64 비트)가 있습니다 . Windows 7 (및 아마도 Windows 8) 용 DevCon.exe 는 이 스레드에 언급 된대로 적절한 WDK (Windows Driver Kit)에 묻혀 있습니다 ( 추출 된 실행 파일 에 대한 다운로드 링크도 포함되어 있음 ).

    devcon status *또는 devcon hwids *또는 devcon findall =usb(더 컴팩트 한 목록은) 당신에게 장치의 하드웨어 ID를 알려 주어야합니다. 예를 들면 다음과 같습니다.

    USB \ VID_0781 & PID_7113 \ 0001162825
    이름 : USB 대용량 저장 장치
    드라이버가 실행 중입니다.

    그런 다음 장치를 제거하여 시도 할 수 있습니다 devcon remove "USB\VID_0781&PID_7113"(*와 같은 와일드 카드는 허용되지만 조심하거나 다른 것을 완전히 제거 할 수 있습니다!)


누군가이 스레드의 복제본으로 불행히도 닫혀진 엄지 드라이브를 꺼내기 위해 " DOS 프롬프트 (Win7의 cmd.exe) 명령이 있습니까? " 그러나 문제는 Windows 복구 콘솔 / 시스템 복구 명령 프롬프트 에있는 동안 USB 드라이브를 꺼내는 것에 관한 것이므로 위의 유틸리티 중 어느 것도 도움이되지 않습니다. 이러한 상황에서 Diskpart 를 사용하는 다음 방법 이 작동해야합니다.

  1. diskpartdiskpart 프롬프트를 입력 하고 기다립니다 ( DISKPART>).

  2. 유형 list volume

  3. USB 드라이브의 볼륨 번호를주의하여 기록하십시오 (도움말을 위해 드라이브 문자, 레이블, 유형 및 크기와 같은 나열된 속성 사용).

  4. select volume <number>, 어디는 <number>볼륨 번호는 위에서 언급한다

    Diskpart

  5. 유형 remove all dismount

  6. exitDiskpart를 종료하려면 입력

이제 데이터 손실에 대한 걱정없이 USB 드라이브를 안전하게 제거 할 수 있습니다.


1
SU가 문을 닫은 후에도 내 질문에 응답하는 데 시간을내어 주셔서 감사합니다. 나는 계속해서 Jared Tritsch의 제안에 따라 행동했고 드라이브를 제거하는 것만으로 드라이브를 제거했습니다. 노트북을 다시 작동 시키면 DISKPART를 실험 해 보겠습니다. 다음은 DISKPART에 대한 Microsoft의 사양에 대한 링크입니다. technet.microsoft.com/ko-kr/library/bb490893.aspx
zundarz

2
@zundarz : 천만에요! 이동식 장치에 대한 Windows 의 기본 제거 정책빠른 제거로 , 쓰기 캐싱을 비활성화하고 드라이브를 먼저 안전하게 제거 할 필요없이 드라이브를 제거 할 수 있습니다. 자세한 내용은 이 스크린 샷 을 참조하십시오 . 따라서 복구 콘솔에서 이동식 드라이브가 동일한 방식으로 처리되는 경우 드라이브를 잡아 당기는 것에 대한 Jared의 제안으로 인해 데이터가 손실되지 않아야합니다. 그래도 마음의 평화를 위해 각 드라이브를 꺼내기 전에 항상 안전하게 분리해야합니다. 위약 일지 모르지만 걱정하지 않아도됩니다. :)
Karan

추신 : Diskpart에주의하십시오-강력하고 따라서 매우 위험합니다. 드라이브 분리에 사용한 이유는 XP의 복구 콘솔과 Vista / 7의 시스템 복구 옵션 / 명령 프롬프트에서 모두 사용할 수 있기 때문입니다.
Karan

Diskpart일반 Windows 모드에서 사용하려고했습니다 . 위의 5 단계를 수행 한 후에 표시되는 메시지입니다. "DiskPart가 드라이브 문자를 성공적으로 제거했지만 변경 사항을 적용하려면 컴퓨터를 재부팅해야합니다. Diskpart가 볼륨을 분리했습니다." 이동식 장치 (예 : SD 카드 리더 또는 USB 플래시 드라이브)가 아닌 이동식 미디어 (SD 카드)에서 사용해 보았습니다. 리더의 LED 표시등은 꺼지지 않았지만 켜져 있습니다 (예 : SD 카드 만 앉아있을 때 가끔 깜박임이 중지됨). 따라서 제거해도 안전하다고 생각합니다.
Samir

3
명령 을 실행 취소 하려면 remove all dismount명령을 사용해야합니다 mountvol. 자세한 내용은 여기 및 Technet 라이브러리를 참조 하십시오 . 사용한 후에 mountvol는 변경 사항을 적용하기 위해 재부팅해야합니다. 또는 디스크 관리를 사용하여 새 드라이브 문자를 할당 할 수도 있습니다.
Samir

16

질문에 대답하기 위해 ... 당신은 타사 물건이 필요하지 않습니다.

명령 줄 (또는 PowerShell)을 사용하여 Windows에서 사용자 입력없이 하드웨어를 자동으로 안전하게 제거하도록하려면 어떻게해야합니까?

다음 명령을 실행하여 RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll 하드웨어 안전하게 제거 대화 상자를 표시하십시오.

하드웨어 안전하게 제거 대화 상자


4
그것이 무엇을 설명 할 수 있습니까?
Canadian Luke

1
USB를위한 안전한 제거
climenole

11
그래도 계속 클릭해야합니까?
Canadian Luke

2
이것은 매우 시원하지만 불행히도 자동화 목적으로 Karan의 제안보다 낫지 않습니다.
Synetech

1
control hotplug.dll , 즉 _RunDLL 이 없으면 Vista SP2에서 작동하지 않습니다
user66001

2

백업 장치이므로 저장 장치이므로 Powershell에서 수행 할 수 있습니다 .X :를 원하는 드라이브 문자로 바꾸십시오.

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

1
serverfaultstackoverflow 에서이 솔루션을 보았지만 외부 HDD에서 작동하지 않는 것 같습니다. 오류 메시지가 없으며 단순히 아무것도하지 않습니다. PowerShell을 관리자 권한으로 실행 한 것과 마찬가지로 차이를 사용 "F:"하거나 변경 "F:\"하지 않았습니다. 작업 표시 줄을 통해 안전하게 제거하고 있습니다. 내가 무엇을 잘못하고 있지?
flolilo

실제 powershell 명령은 오류 (빨간색 텍스트) 메시지를 반환하지 않습니까?
Overmind

F : \를 분리하고 명령을 실행하면 NULL 인 메소드를 실행할 수 없다는 오류가 발생합니다 (메시지가 독일어이므로 번역이 올바른지 확실하지 않습니다). F : \가 연결된 상태에서 명령을 실행하면 메시지가 전혀 없습니다- $error비어 있습니다. 그건 그렇고 Win10 Pro에서 PowerShell 5.1을 실행하고 있습니다. F : \는 파티션 (F :)이 하나 뿐인 외장 USB HDD입니다. 작업 표시 줄을 통해 문제없이 안전하게 제거 할 수 있습니다.
flolilo

흥미롭게도 USB 펜 드라이브 (하나의 파티션과 함께)를 사용하면 완벽하게 작동합니다. 두 가지 모두 Better performance제거 정책에서 활성화 되었지만 아무런 차이가없는 것 같습니다 (USB pendrive는 두 설정 모두에서 작동하지만 USB HDD는 작동하지 않습니다). 내가 소유 한 두 번째 pendrive도 PowerShell 명령을 통해 꺼내기를 좋아하지 않습니다. 작동 : JetFlash 700 (16GB, FAT32), 작동하지 않음 : Seagate Expansion Portable 2015 (4TB, NTFS), Sandisk Extreme (32GB, exFAT). 모두 동일한 USB 포트에서 여러 번 시도했습니다. 다시 한 번 작업 표시 줄 아이콘을 통해 안전하게 제거하면 항상 작동합니다.
flolilo

@flolilolilo 나는 같은 문제가 있습니다 ...
Ploni

1

이 7tutorials-article 에 따르면 "빠른 제거"를 설정하여 안전하게 분리 할 수 ​​있습니다. 이렇게하면 장치 당 쓰기 캐싱을 사용할 수 없게 되는데, 성능에 미치는 영향은 "무시할 수 있습니까?" Windows 7의 단계는 다음과 같습니다.

( 편집 )에 따르면 이 howtogeek - 기사 "빠른 제거"를 설정할 때, 당신은 여전히주의해야합니다. 이렇게하면 쓰기 캐싱이 비활성화되어 대부분의 문제가 방지됩니다. 그러나 일부 프로그램은 명시 적으로 꺼내거나 제거 할 때까지 물건을 '실시간'으로 쓰고있을 수 있습니다. ( 편집 종료 )

단계 :

  • USB 드라이브에 장치를 연결하십시오
  • 장치 관리자를 엽니 다
  • 디스크 드라이브 확장
  • 이동식 드라이브 (예 : "USB2.0 Flash Disk USB Device")를 마우스 오른쪽 단추로 클릭하십시오.
  • 속성을 선택하십시오
  • 정책 탭을 클릭하십시오
  • "빠른 제거"활성화 ( "더 나은 성능"비활성화)

( 편집 ) 설정을 변경하려면 장치 관리자를 사용해야하며 파일 탐색기에서 수행 할 수 없습니다. (적어도 내 Windows 10 버전에서는.)


1
이것은 백업 드라이브에 대한 좋은 아이디어처럼 들립니다! 그래도 이것이 기본 설정 인 것 같습니다 (적어도 나의 경우 Seagate BUP Slim BK USB External Drive).
Arvo Bowen

1
쓰기 캐시가 활성화 된 장치는 빠르게 제거 할 수 없습니다.
Overmind

1
향후 연결될 모든 USB 저장소에 적용되도록 전역 적으로 설정할 수 있습니까?
DuckMaestro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.