Acceso a una unidad de disco utilizando la ID de volumen en lugar de una letra de unidad en Windows

31

¿Puedo acceder a una unidad de disco usando la identificación del volumen en lugar de una letra de unidad en Windows? Podría ser muy útil para unidades externas.

olvin
fuente
Para las particiones que no tienen ninguna letra de unidad asignada, las ID de volumen son la única forma de acceder a ellas. No puede asignar letras de unidad a una nueva partición si ya ha consumido 26 letras del alfabeto inglés a través de sus particiones ya existentes. Entonces, en tal caso, no solo serán útiles, sino que serán la ÚNICA forma de acceder a ellos.
RBT

Respuestas:

42

Puede usarlo mountvolen el símbolo del sistema para obtener la ID del volumen al que desea acceder.

ingrese la descripción de la imagen aquí

Estas ID se pueden usar para abrir una ventana del explorador, independientemente de la letra de la unidad

ingrese la descripción de la imagen aquí

Para crear un acceso directo a la unidad, cree un nuevo archivo por lotes con este contenido:

start \\?\Volume{1b3b1146-4076-11e1-84aa-806e6f6e6963}\
Gene
fuente
¡Sí, es lo que busqué por mucho tiempo! Ahora solo necesito llamar al comando mountvol para obtener todas las ID de volumen. Luego, utilizando una ruta como "\\? \ Volume {}", puedo acceder a la unidad con la ID necesaria (si se presenta). ¡Gracias!
olvin
1
Sí, este método funciona con Explorer y al copiar archivos con línea de comando. Pero desafortunadamente TrueCrypt no acepta tal camino a un archivo
clave
Desafortunadamente, solo funciona si tiene NetBIOS y el Localizador RPC ejecutándose, por lo que esto no funcionará si ha endurecido Windows. Además, es probable que necesite mantener varios servicios y controladores relacionados con la red en funcionamiento para usarlo (estación de trabajo, navegador de computadora, servidor, TCP / IP NetBIOS Helper, NetBT, DHCP, DNS, etc.) Esto es tonto ya que estos son volúmenes locales. :-|
Synetech
1
Bueno ... TrueCrypt admite esto para montar de manera confiable la unidad correcta:@"%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v \\?\Volume{4033aabd-1234-5678-a1234567890}\ /lr /c n /q
Frank Nocke
@Synetech: No puedo replicar eso; la respuesta publicada me funciona bien incluso con NetBIOS y el RPC Locator, y todo lo relacionado con la red que pude encontrar, deshabilitado. (¿Quizás estaba confundiendo la ruta del kernel con una ruta UNC? ¿O era solo un problema en una versión anterior de Windows?)
Harry Johnston
9

En PowerShell , use Get-Volumecanalizado de Format-Listesta manera:

get-volume | fl 

le dará todo lo que necesita, por ejemplo, este SYSTEM RESERVEDvolumen en una de mis máquinas:

ObjectId             : {1}\\ACER-M3900\root/Microsoft/Windows/Storage/Providers_v2\WSP_Volume.ObjectId="{5b16a307-de54-11e7-8aeb-806e6f6e6963}:VO:\\?\Volume{b41b0670-0000-0000-00e8-0e8004000000}\"
PassThroughClass     :
PassThroughIds       :
PassThroughNamespace :
PassThroughServer    :
UniqueId             : \\?\Volume{b41b0670-0000-0000-00e8-0e8004000000}\
AllocationUnitSize   : 4096
DedupMode            : NotAvailable
DriveLetter          :
DriveType            : Fixed
FileSystem           : NTFS
FileSystemLabel      : SYSTEM RESERVED
FileSystemType       : NTFS
HealthStatus         : Healthy
OperationalStatus    : OK
Path                 : \\?\Volume{b41b0670-0000-0000-00e8-0e8004000000}\
Size                 : 105058304
SizeRemaining        : 33992704
PSComputerName       :
Aaron
fuente
para ver volúmenes ocultos / del sistema, debe ejecutar elevado, ver Advertencias en mi respuesta
papo
4

Prefiero usar letras de unidad absolutas para unidades flash. Hay asignaciones adecuadas para casi cualquier persona a menos que tenga 20 o más unidades flash.

En Windows 7 use Windows para formatear y asignar una etiqueta de unidad o si la unidad ya tiene una etiqueta, use la línea de comando "Etiqueta (letra de unidad) para darle una etiqueta de su elección.

Luego vaya al panel de control, sistema y seguridad, herramientas administrativas, administración de computadoras, administración de discos para seleccionar la unidad con la etiqueta que creó haciendo clic derecho en la unidad, seleccione cambiar la letra y las rutas de la unidad y asigne el volumen a una letra de unidad específica. Siempre se montará en esa letra de unidad si está disponible.

He etiquetado unidades que contenían datos en vivo y el etiquetado no afectó los datos existentes de ninguna manera. Parece funcionar igual que en disquetes en los viejos tiempos

Brote
fuente
0

Usando una etiqueta

Puede acceder a una unidad de disco usando su etiqueta en PS de esta manera:

ls -l (Get-Volume | ? FileSystemLabel -eq "Barry Allen drive").Path

Se acorta, use el formato completo en una secuencia de comandos para una mejor lectura: consulte a continuación

Usando GptType

GPT usa ID fijos para particiones especiales. Podemos usarlos para escribir scripts portátiles, para acceder a volúmenes de recuperación o del sistema en cualquier computadora sin asignarle una letra:

Volumen del sistema:
ls -l (Get-Partition | ? GptType -eq "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}").AccessPaths[0]

Volumen de recuperación:
ls -l (Get-Partition | ? GptType -eq "{de94bba4-06d1-4d40-a16a-bfd50179d6ac}").AccessPaths[0] -Force
cd "$((Get-Partition | ? GptType -eq "{de94bba4-06d1-4d40-a16a-bfd50179d6ac}").AccessPaths[0])Recovery"

MSR: en UEFI, hay (debería haber) también una partición MSR, pero no puede acceder a ella ya que no tiene un volumen ni un sistema de archivos:
error:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



Tres advertencias:

Get-Volume no enumerará los volúmenes ocultos a menos que se ejecute elevado, Get-Partition los enumerará no elevados, pero de todos modos no puede acceder a ellos sin elevar.

Con Get-ChildItem (ls), la ruta del dispositivo debe pasarse utilizando el argumento -LiteralPath (-l). Esto no es por '?' personaje especial. -Path simplemente no funciona con Device Path incluso si '?' Es escapado.

No es posible crear un CD en la raíz de Device Path. Pero es posible CD a su carpeta.



Explicación y formato completo de las declaraciones anteriores.

Utilice siempre el formato completo en un script para una mejor lectura

ls -l ((Get-Partition | ? GptType -eq "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}").AccessPaths[0])

es la abreviatura de:

Get-ChildItem -LiteralPath ((Get-Partition | Where-Object { $_.GptType -eq "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}" }).AccessPaths[0])

lses un alias de Get-ChildItem
-lse acorta -LiteralPath
? *attribute* -eq "*value*"se acorta la construcción de ? { $_.*attribute* -eq "*value*" }
?es un alias de Where-Object
-Forcese utiliza para ver archivos ocultos en el volumen de recuperación

Uso de Get-Partition y Get-Volume:
Get-Partition proporciona el parámetro GptType, pero no Label, Get-Volume proporciona Label, pero no GptType

papo
fuente