41 votes

Accès à un lecteur de disque en utilisant l'identifiant de volume au lieu d'une lettre de lecteur dans Windows

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

53voto

Dan Points 141

Vous pouvez utiliser mountvol dans l'invite de commande pour obtenir l'ID du volume que vous voulez accéder.

entrer la description de l'image ici

Ces IDs peuvent être utilisés pour ouvrir une fenêtre de l'explorateur, indépendamment de la lettre de lecteur

entrer la description de l'image ici

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

start \\?\Volume{1b3b1146-4076-11e1-84aa-806e6f6e6963}\

11voto

Aaron Points 111

En PowerShell, utilisez Get-Volume suivi de Format-List comme ceci :

get-volume | fl 

vous donnera tout ce dont vous avez besoin, par exemple ce volume SYSTEM RESERVED sur l'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       :

3voto

Hohumibu Points 11

Je préfère utiliser des lettres de lecteur absolues pour les lecteurs flash. Il y a des affectations adéquates pour presque tout le monde, 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 a déjà une étiquette, utilisez la ligne de commande "Label (lettre de lecteur)" pour lui donner une étiquette de votre choix.

Ensuite, allez dans le panneau de configuration, système et sécurité, outils d'administration, gestion de l'ordinateur, 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 et attribuez le volume à une lettre de lecteur spécifique. Il sera toujours monté sur cette lettre de lecteur si elle est disponible.

J'ai étiqueté des lecteurs contenant des données en direct et l'étiquetage n'a en aucun cas affecté les données existantes. Ça semble fonctionner comme ça le faisait sur les disquettes à l'époque.

1voto

Leo Points 1833

Utilisation d'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

C'est abrégé, utilisez le format complet dans un script pour une meilleure lisibilité - voir ci-dessous

Utilisation de GptType

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

Précautions

  • Get-Volume ne listera pas les volumes cachés à moins d'être exécuté avec des droits élevés, Get-Partition les listera sans élévation, mais vous ne pourrez pas y accéder davantage sans élévation de toute façon.
  • Avec Get-ChildItem (ls), le chemin du périphérique doit être passé en utilisant l'argument -LiteralPath (-l). Ce n'est pas à cause du caractère '?' spécial. -Path ne fonctionne tout simplement pas avec le chemin du périphérique même si '?' est échappé.
  • Il n'est pas possible de CD dans la racine du chemin du périphérique. Mais il est possible de CD vers 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 abrégé en :

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

ls est un alias de Get-ChildItem
-l est l'abréviation de -LiteralPath
? *attribut* -eq "*valeur*" est une construction abrégée de ? { $_.*attribut* -eq "*valeur*" }
? est un alias de Where-Object
-Force est 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X