Accès à un lecteur de disque à l'aide de l'ID de volume au lieu d'une lettre de lecteur dans Windows

31

Puis-je accéder à un lecteur de disque à l'aide de l'ID de volume au lieu d'une lettre de lecteur sous Windows? Cela pourrait être très utile pour les disques externes.

olvin
la source
Pour les partitions auxquelles aucune lettre de lecteur n'est affectée, les ID de volume sont le seul moyen d'y accéder. Vous ne pouvez pas attribuer de lettre de lecteur à une nouvelle partition si vous avez déjà consommé 26 lettres de l'alphabet anglais via vos partitions déjà existantes. Ainsi, dans un tel cas, ils ne seront pas seulement utiles, mais ils seront le SEUL moyen d'y accéder.
RBT

Réponses:

42

Vous pouvez utiliser mountvoldans l'invite de commande pour obtenir l'ID du volume auquel vous souhaitez accéder.

entrez la description de l'image ici

Ces ID peuvent être utilisés pour ouvrir une fenêtre d'explorateur, indépendante de la lettre de lecteur

entrez la description de l'image ici

Pour créer un raccourci vers le lecteur, créez un nouveau fichier de commandes avec ce contenu:

start \\?\Volume{1b3b1146-4076-11e1-84aa-806e6f6e6963}\
Gène
la source
Oui, c'est ce que j'ai cherché longtemps! Maintenant, j'ai juste besoin d'appeler la commande mountvol pour obtenir tous les ID de volume. Ensuite, en utilisant un chemin comme "\\? \ Volume {}", je peux accéder au lecteur avec l'ID nécessaire (s'il se présente). Merci!
olvin
1
Oui, cette méthode fonctionne avec Explorer et lors de la copie de fichiers avec la ligne de commande. Mais malheureusement, TrueCrypt n'accepte pas un tel chemin vers un fichier de clés = (
olvin
Malheureusement, cela ne fonctionne que si vous avez NetBIOS et le localisateur RPC en cours d'exécution, donc cela ne fonctionnera pas si vous avez renforcé Windows. De plus, vous devrez probablement maintenir plusieurs services et pilotes liés au réseau en cours d'exécution pour l'utiliser (station de travail, navigateur informatique, serveur, TCP / IP NetBIOS Helper, NetBT, DHCP, DNS, etc.). C'est stupide car ce sont des volumes locaux. :-|
Synetech du
1
Eh bien .. TrueCrypt prend en charge cela pour monter de manière fiable le bon lecteur:@"%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v \\?\Volume{4033aabd-1234-5678-a1234567890}\ /lr /c n /q
Frank Nocke
@Synetech: Je ne peux pas reproduire cela; la réponse telle que publiée fonctionne bien pour moi, même avec NetBIOS et le localisateur RPC, et tout ce qui concerne le réseau que je pourrais trouver, désactivé. (Peut-être vous trompiez-vous le chemin du noyau pour un chemin UNC? Ou c'était seulement un problème sur une version antérieure de Windows?)
Harry Johnston
9

Dans PowerShell , utilisez un Get-Volumecanalisation Format-Listcomme ceci:

get-volume | fl 

vous donnera tout ce dont vous avez besoin, par exemple ce SYSTEM RESERVEDvolume sur une de mes machines:

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
la source
pour voir les volumes cachés / système, vous devez exécuter élevé, voir les mises en garde dans ma réponse
papo
4

Je préfère utiliser des lettres de lecteur absolues pour les lecteurs flash. Il y a des affectations adéquates pour à peu près n'importe qui, sauf si vous avez 20 lecteurs flash ou plus.

Sous Windows 7, utilisez Windows pour formater et attribuer une étiquette de lecteur ou si le lecteur possède déjà une étiquette, utilisez la ligne de commande "Étiquette (lettre de lecteur) pour lui donner une étiquette de votre choix.

Ensuite, accédez au panneau de configuration, au système et à la sécurité, aux outils d'administration, à la gestion de l'ordinateur, à la gestion des disques pour sélectionner le lecteur avec l'étiquette que vous avez créée en cliquant avec le bouton droit sur le lecteur, sélectionnez modifier la lettre de lecteur et les chemins d'accès et attribuez le volume à une lettre de lecteur spécifique. Il sera toujours monté sur cette lettre de lecteur s'il est disponible.

J'ai étiqueté des disques contenant des données en direct et l'étiquetage n'a eu aucune incidence sur les données existantes. Il semble fonctionner comme sur les disquettes au bon vieux temps

Bourgeon
la source
0

Utiliser une étiquette

Vous pouvez accéder à un lecteur de disque en utilisant son étiquette dans PS comme ceci:

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

Il est raccourci, utilisez le format complet dans un script pour une meilleure lisibilité - voir ci-dessous

Utilisation de GptType

GPT utilise des ID fixes pour les partitions spéciales. Nous pouvons les utiliser pour écrire des scripts portables, pour accéder aux volumes de récupération ou système sur n'importe quel ordinateur sans lui assigner une lettre:

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

Volume de récupération:
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: sur UEFI, il y a (devrait y avoir) aussi une partition MSR, mais vous ne pouvez pas y accéder car elle n'a pas de volume ni de système de fichiers:
erreur:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



Trois mises en garde:

Get-Volume ne répertoriera pas les volumes cachés à moins qu'il ne soit élevé, Get-Partition les répertoriera non élevés, mais vous ne pouvez pas y accéder de toute façon sans niveau.

Avec Get-ChildItem (ls), le chemin du périphérique doit être transmis à l'aide de l'argument -LiteralPath (-l). Ce n'est pas à cause de '?' Caractère spécial. -Path ne fonctionne tout simplement pas avec le chemin d'accès du périphérique même si "?" est échappé.

Il n'est pas possible de CD à la racine de Device Path. Mais il est possible de CD dans son dossier.



Explication et format complet des déclarations ci-dessus

Utilisez toujours le format complet dans un script pour une meilleure lisibilité

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

est l'abréviation de:

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

lsest un alias de Get-ChildItem
-lest raccourci -LiteralPath
? *attribute* -eq "*value*"est une construction raccourcie de ? { $_.*attribute* -eq "*value*" }
?est un alias de Where-Object
-Forceest utilisé pour voir les fichiers cachés sur le volume de récupération

Utilisation de Get-Partition et Get-Volume:
Get-Partition fournit le paramètre GptType, mais pas Label, Get-Volume donne Label, mais pas GptType

papo
la source