Remova o dispositivo USB da linha de comando

56

Estou construindo um script de backup para o Windows 7, e a última ação que quero executar é "remover" com segurança a unidade USB que está fazendo backup. Tenho a impressão de que ligar a unidade à mesma porta USB o tempo todo manterá o mesmo DEV_ID (corrija-me se estiver errado). Com uma linha de comando (ou PowerShell), como posso dizer ao Windows para remover com segurança o hardware automaticamente sem a entrada do usuário?

Assim como um espaço reservado, outros sistemas operacionais que possam ter uma maneira de fazer isso seria ótimo saber também.

    
por Canadian Luke 29.06.2012 / 22:01

5 respostas

31

RemoveDrive me serviu bem no passado

    
por 29.06.2012 / 22:10
63

Além do RemoveDrive de Uwe Sieber mencionado na outra resposta, há um todo monte de utilitários que podem fazer isso. Uma pequena lista segue:

  • O USB Disk Ejector é basicamente um utilitário baseado em GUI, mas pode ser usado igualmente bem a partir da linha de comando para ejetar a unidade que o programa está sendo executado, ou qualquer unidade, especificando a letra da unidade / (parcial) o nome da unidade / ponto de montagem etc. Fonte livre e aberta.

  • O USB Safely Remove não é gratuito, mas é um utilitário de remoção de disco com esteróides, com muitos recursos avançados , incluindo, é claro, suporte à linha de comando . Zentimo é o seu irmão maior, com até mais recursos .

  • O DevCon da Microsoft é a versão de linha de comando do Gerenciador de Dispositivos. Além da versão original da era Win2K / XP disponível na página da KB, existem lançamentos mais recentes (tanto de 32 quanto de 64 bits) disponíveis em várias fontes da Microsoft, como mencionado neste Onde encontrar o artigo DevCon.exe . DevCon.exe para o Windows 7 (e provavelmente o Windows 8 também) pode ser encontrado enterrado no apropriado Windows Driver Kit (WDK) , conforme mencionado em este thread (que também contém links de download para o executável extraído ).

    devcon status * ou devcon hwids * ou devcon findall =usb (para uma listagem mais compacta) deve informar o ID do hardware do dispositivo. Por exemplo:

    USB\VID_0781&PID_7113%bl0ck_qu0te%01162825
    Name: USB Mass Storage Device
    Driver is running.

    Você pode então tentar remover o dispositivo com devcon remove "USB\VID_0781&PID_7113" (curingas como * são permitidas, mas tenha cuidado ou você pode acabar removendo algo completamente diferente!)

Alguém perguntou " Existe um prompt do DOS (cmd.exe do Win7) para ejetar um pen drive? " que infelizmente foi fechado como uma duplicata deste segmento. No entanto, a questão era sobre a ejeção de drives USB, enquanto no Console de Recuperação do Windows / Prompt de Comando de Recuperação do Sistema , portanto, é improvável que qualquer um dos utilitários acima ajude. Nessa situação, o seguinte método que usa o Diskpart deve funcionar:

  1. Digite diskpart e aguarde o prompt do diskpart ( DISKPART> )

  2. Digite list volume

  3. Anote o número do volume da unidade USB com cuidado (use as propriedades listadas, como letra de unidade, etiqueta, tipo e tamanho, para obter ajuda)

  4. Digite select volume <number> , em que <number> é o número do volume indicado acima

  5. Digite remove all dismount

  6. Digite exit para sair do Diskpart

Agora, você poderá remover seu pendrive com segurança sem medo de perda de dados.

    
por 12.10.2012 / 03:14
13

Para responder a esta questão ... Você não precisa de material de terceiros.

With a Command Line (or PowerShell), how can I tell Windows to safely remove the hardware automatically without user input?

Execute este comando: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll para abrir a caixa de diálogo Remover hardware com segurança:

    
por 12.10.2012 / 07:56
2

Como é um dispositivo de backup, significa que é um dispositivo de armazenamento, portanto, pode ser feito a partir do powershell - basta substituir X: pela letra de unidade desejada:

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

De acordo com este artigo dos 7tutorials , você pode ativar a desconexão segura configurando "Remoção rápida". Isso desativará o cache de gravação por dispositivo , cujo impacto no desempenho é "insignificante"? Seus passos para o Windows 7 estão abaixo.

( Editar ) De acordo com this howtogeek-article , você ainda deve ter cuidado ao definir "Remoção rápida". Isso desativará o cache de gravação e evitará a maioria dos problemas. Mas alguns programas ainda podem estar escrevendo coisas ao vivo, até serem explicitamente ejetadas / removidas. ( Fim da edição )

Etapas:

  • conecte o dispositivo na unidade USB
  • abra o Gerenciador de dispositivos
  • expanda Unidades de disco
  • clique com o botão direito do mouse na sua unidade removível, por exemplo "USB2.0 Dispositivo USB com disco flash".
  • selecione Propriedades
  • clique na guia Políticas
  • ativar "Remoção rápida" (desativar "Melhor desempenho")

( Editar ) Observe que você precisa usar o Gerenciador de dispositivos para alterar a configuração, isso não pode ser feito no Gerenciador de arquivos. (Pelo menos na minha edição do Windows 10).

    
por 01.07.2014 / 16:28