2012-06-29 20:01:16 +0000 2012-06-29 20:01:16 +0000
66
66

Remover dispositivo USB da linha de comando

Estou a construir um script de salvaguarda para o Windows 7, e a última acção que quero que execute é “remover” em segurança a drive USB para a qual está a fazer o backup. Tenho a impressão de que ligar a unidade à porta USB same o tempo todo irá manter o mesmo DEV_ID (corrige-me se estiver errado). Com uma linha de comando (ou PowerShell), como posso dizer ao Windows para remover o hardware em segurança automaticamente sem a entrada do utilizador?

Tal como um suporte de local, outros SOs que possam ter uma forma de o fazer seriam óptimos de conhecer também.

Respostas (6)

67
67
67
2012-10-12 01:14:18 +0000

Além de Uwe Sieber’s RemoveDrive mencionado na outra resposta, há toda uma série de utilidades que podem realizar isto. Segue-se uma pequena lista:

  • USB Disk Ejector é principalmente um utilitário baseado em GUI mas pode ser usado igualmente bem a partir da linha de comando para ejectar a unidade de onde o programa está a correr, ou qualquer unidade especificando a letra da unidade / nome da unidade (parcial) / ponto de montagem, etc. Livre e de código aberto.

  • USB Safely Remove não é gratuito mas é um utilitário de remoção de disco em esteróides, com muitas características avançadas , incluindo naturalmente suporte de linha de comando . Zentimo é o seu irmão maior, com até mais características .

  • o próprio DevCon é a versão de linha de comando do Device Manager. Além da versão original Win2K/XP-era disponível a partir da página KB, há versões mais recentes (tanto 32 como 64 bits) disponíveis a partir de várias fontes MS, conforme mencionado neste Onde encontrar DevCon.exe artigo. DevCon.exe para Windows 7 (e provavelmente também Windows 8) pode ser encontrado enterrado no apropriado Windows Driver Kit (WDK) , como mencionado em este tópico (que também contém links de download para o executável extraído ).


Alguém perguntou Existe um comando DOS (cmd.exe de Win7) para ejectar uma unidade de polegar? “ que infelizmente foi fechado como um duplicado desta thread. Contudo, a questão era sobre ejectar unidades USB enquanto no Windows Recovery Console / System Recovery Command Prompt* , por isso é improvável que qualquer um dos utilitários acima referidos ajude. Em tal situação, o seguinte método usando Diskpart* deve funcionar:

  1. tipo diskpart& e aguarde pelo prompt diskpart (DISKPART>)

  2. Tipo list volume

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

  4. Tipo select volume <number>, onde <number> é o número do volume anotado acima

  5. Tipo remove all dismount

  6. Tipo exit para sair do Diskpart

Agora deverá ser capaz de remover com segurança a sua unidade USB sem receio de perda de dados.

33
33
33
2012-06-29 20:10:44 +0000

(http://www.uwe-sieber.de/drivetools_e.html) já me serviu bem no passado

17
17
17
2012-10-12 05:56:40 +0000

Para responder a esta pergunta… Não precisa de coisas de terceiros.

Com uma Linha de Comando (ou PowerShell), como posso dizer ao Windows para remover o hardware em segurança automaticamente sem a entrada do utilizador?

Execute este comando: RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll& para trazer à tona a caixa de diálogo Remover Hardware em Segurança:

4
4
4
2017-06-14 10:46:54 +0000

Uma vez que é um dispositivo de salvaguarda, significa que é um dispositivo de armazenamento, portanto pode ser feito a partir de powerhell - basta substituir X: pela sua letra de unidade desejada:

$driveEject = New-Object -comObject Shell.Application
$driveEject.Namespace(17).ParseName("X:").InvokeVerb("Eject")
1
1
1
2014-07-01 14:28:21 +0000

De acordo com este 7tutorials-artigo , pode permitir uma desconexão segura definindo “Remoção rápida”. Isto irá desactivar o cache de escrita por dispositivo, do qual o impacto do desempenho é “negligenciável”? Os seus passos para o Windows 7 estão abaixo.

( Editar* ) De acordo com este howtogeek-article , deve ainda ter cuidado ao definir “Remoção rápida”. Isto irá desactivar o cache de escrita, e evitará assim a maioria dos problemas. Mas algum(s) programa(s) pode(m) ainda estar a escrever coisas “ao vivo”, até serem explicitamente ejectados/removidos. ( End of edit )

Passos:

  • ligar o dispositivo na unidade USB
  • abrir Device Manager
  • expandir Unidades de Disco
  • clicar no botão direito do rato na sua unidade amovível, por exemplo “USB2.0 Flash Disk USB Device”. & - seleccionar Propriedades & - clicar no separador Políticas & - activar “Remoção rápida” (desactivar “Melhor desempenho”)

( Editar* ) Note que necessita de utilizar o Gestor de Dispositivos para alterar a configuração, não pode ser feito a partir do Explorador de Ficheiros. (Pelo menos na minha edição do Windows 10).

0
0
0
2019-11-21 19:57:26 +0000

Não foi possível encontrar um comando interno (obrigado MS), nem um único guião por aí funcionou, a remoção da letra é uma forma pobre de fazer ejectar, a forma interactiva também não é fixe, e o ódio de usar ferramentas de terceiros. No meu caso, usando algo que está no meu disco durante 20 anos: o inhouse Microsoft Windows Sysinternals ajuda o caso:

sync -e x:
  • descarrega a unidade usb
  • ejeta a unidade usb
  • mantém a letra
  • não distorce a árvore USB

em caso de fechaduras, use Sysinternals handle ou procexp para descobrir.