Estoy intentando desmontar una unidad USB externa con PowerShell y no puedo hacerlo con éxito. El siguiente script es lo que 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)
Luego verifico mi computadora para verificar si la unidad está desmontada pero no lo está.
Los parámetros booleanos $ force y $ permanent se han probado con diferentes permutaciones en vano. El código de salida devuelto por el comando de desmontaje cambia cuando se activan los parámetros.
(0,0) = exit code 0
(0,1) = exit code 2
(1,0) = exit code 0
(1,1) = exit code 2
La documentación para el código de salida 2 indica que hay puntos de montaje existentes como una razón por la cual no se puede desmontar. Aunque estoy tratando de desmontar el único punto de montaje que existe, así que no estoy seguro de lo que este código de salida intenta decirme.
Después de haber rastreado la web para personas que experimentan problemas similares, solo he encontrado un comando adicional para probar y ese es el siguiente:
# executed after the .Dismount() command
$drive.Put()
Este comando adicional no ayuda.
Me estoy quedando sin cosas para probar, por lo que cualquier ayuda que alguien me pueda dar sería muy apreciada.
Respuestas:
Una solución limpia que no deja referencias abiertas a medio cocer como lo hace la muestra de pk es:
Recuperado de http://sushihangover.blogspot.nl/2012/02/powershell-eject-local-or-remote.html
fuente
powershell (New-Object -comObject Shell.Application).Namespace(17).ParseName(\"E:\").InvokeVerb(\"Eject\")
$?
esTrue
después de invocar la segunda línea. ¿Hay algo que pueda hacer?No puedo hacer un gran trabajo respondiendo desde el extremo de PowerShell, por lo que es posible que desee ver cómo
mountvol
funciona . Hay diferentes grados de desmontaje.Intenté hacer algo similar a lo que requería en VBScript para reordenar dispositivos en escritorios antiguos donde las unidades de montaje para hardware antiguo que era demasiado tedioso para eliminar (leer la unidad Flash) estaba interfiriendo con accesos directos en una GUI personalizada donde solo podía mencionar explícitamente los puntos de montaje ( D :, E :, F :) con un propósito particular. Esto se volvió muy frustrante, y tienes que desmontar y volver a montar cosas usando las entradas y salidas mountvol para verificar que funcionó bien y proceder con los cambios. Espero que tengas mejor suerte que yo.
fuente