Estou tentando desmontar uma unidade USB externa usando o PowerShell e não consigo fazer isso com êxito. O script a seguir é o que eu uso:
#get the Win32Volume object representing the volume I wish to eject
$drive = Get-WmiObject Win32_Volume -filter "DriveLetter = 'F:'"
#call dismount on that object there by ejecting drive
$drive.Dismount($Force , $Permanent)
Em seguida, verifico meu computador para verificar se a unidade está desmontada, mas não está.
Os parâmetros booleanos $ force e $ permanente foram tentados com diferentes permutações sem sucesso. O código de saída retornado pelo comando desmontar muda quando os parâmetros são alternados.
(0,0) = exit code 0
(0,1) = exit code 2
(1,0) = exit code 0
(1,1) = exit code 2
A documentação para o código de saída 2 indica que existem pontos de montagem existentes como uma razão pela qual não é possível desmontar. Embora eu esteja tentando desmontar o único ponto de montagem que existe, não tenho certeza do que esse código de saída está tentando me dizer.
Já tendo vasculhado a web para pessoas com problemas semelhantes, encontrei apenas um comando adicional para tentar e é o seguinte:
# executed after the .Dismount() command
$drive.Put()
Este comando adicional não ajuda.
Estou ficando sem coisas para tentar, então qualquer ajuda que alguém possa me dar seria muito apreciada.
Respostas:
Uma solução limpa que não deixa nenhuma referência aberta pela metade como a amostra da pk faz é:
Obtido em http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html
fonte
powershell (New-Object -comObject Shell.Application).Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\")
$?
éTrue
depois de chamar a segunda linha. Há algo que eu possa fazer?Não posso fazer um ótimo trabalho respondendo no final do PowerShell, talvez você queira ver como
mountvol
funciona . Existem diferentes graus de desmontagem.Tentei fazer algo semelhante ao necessário no VBScript para reordenar dispositivos em áreas de trabalho antigas, onde montagens de unidades para hardware mais antigo que eram tediosas demais para serem removidas (leia a unidade Flash) estavam interferindo nos atalhos de uma GUI personalizada, na qual eu só podia mencionar explicitamente pontos de montagem ( D :, E :, F :) com uma finalidade específica. Isso se tornou extremamente frustrante, e você precisa desmontar e remontar coisas usando entradas e saídas mountvol para verificar se tudo correu bem e prosseguir com as alterações. Espero que você tenha melhor sorte do que eu.
fonte