Accesso a un'unità disco mediante ID volume anziché una lettera di unità in Windows


31

Posso accedere a un'unità disco utilizzando l'ID volume anziché una lettera di unità in Windows? Potrebbe essere molto utile per le unità esterne.


Per le partizioni alle quali non è stata assegnata alcuna lettera di unità, gli ID volume sono l'unico modo per accedervi. Non è possibile assegnare una lettera di unità a una nuova partizione se sono già state consumate 26 lettere dell'alfabeto inglese attraverso le partizioni già esistenti. Quindi, in tal caso, non saranno solo utili, ma saranno L'UNICO modo per accedervi.
RBT,

Risposte:


42

È possibile utilizzare mountvolnel prompt dei comandi per ottenere l'ID del volume a cui si desidera accedere.

inserisci qui la descrizione dell'immagine

Questi ID possono essere utilizzati per aprire una finestra di Explorer, indipendentemente dalla lettera di unità

inserisci qui la descrizione dell'immagine

Per creare un collegamento all'unità, creare un nuovo file batch con questo contenuto:

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

Sì, è quello che ho cercato a lungo! Ora ho solo bisogno di chiamare il comando mountvol per ottenere tutti gli ID del volume. Quindi, usando un percorso come "\\? \ Volume {}" posso accedere all'unità con l'ID necessario (se presente). Grazie!
olvin,

1
Sì, questo metodo funziona con Explorer e durante la copia di file con riga di comando. Ma sfortunatamente TrueCrypt non accetta tale percorso per un file di chiavi = (
olvin,

Sfortunatamente funziona solo se hai NetBIOS e il localizzatore RPC in esecuzione, quindi questo non funzionerà se hai Windows rinforzato. Inoltre, probabilmente dovrai mantenere in esecuzione diversi servizi e driver relativi alla rete per utilizzarlo (Workstation, Browser del computer, Server, Helper NetBIOS TCP / IP, NetBT, DHCP, DNS, ecc.) È stupido poiché questi sono volumi locali. :-|
Synetech,

1
Bene ... TrueCrypt supporta questo per montare in modo affidabile l'unità giusta:@"%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v \\?\Volume{4033aabd-1234-5678-a1234567890}\ /lr /c n /q
Frank Nocke,

@Synetech: non riesco a replicarlo; la risposta postata funziona bene anche con NetBIOS e RPC Locator, e qualsiasi altra cosa relativa alla rete che ho trovato, disabilitata. (Forse stavi sbagliando il percorso del kernel per un percorso UNC? O era solo un problema in una versione precedente di Windows?)
Harry Johnston,

9

In PowerShell , utilizzare il Get-Volumepiped through in Format-Listquesto modo:

get-volume | fl 

ti darà tutto ciò di cui hai bisogno, ad esempio questo SYSTEM RESERVEDvolume su una delle mie macchine:

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       :

per vedere i volumi nascosti / di sistema, è necessario eseguire elevati, vedere Avvertenze nella mia risposta
papo

4

Preferisco usare lettere di unità assolute per le unità flash. Ci sono assegnazioni adeguate per quasi tutti a meno che tu non abbia 20 o più unità flash.

In Windows 7 usa Windows per formattare e assegnare un'etichetta di unità o se l'unità ha già un'etichetta, usa la riga di comando "Etichetta (lettera di unità) per dargli un'etichetta di tua scelta.

Quindi vai al pannello di controllo, al sistema e alla sicurezza, agli strumenti di amministrazione, alla gestione del computer, alla gestione del disco per selezionare l'unità con l'etichetta creata facendo clic con il pulsante destro del mouse sull'unità, selezionare cambia lettera e percorsi dell'unità e assegnare il volume a una lettera di unità specifica. Si monterà sempre su quella lettera di unità se è disponibile.

Ho etichettato le unità che contenevano dati in tempo reale e l'etichettatura non ha influito in alcun modo sui dati esistenti. Sembra funzionare proprio come ai floppy ai vecchi tempi


0

Usando un'etichetta

Puoi accedere a un'unità disco usando la sua etichetta in PS in questo modo:

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

È abbreviato, usa il formato completo in uno script per una migliore leggibilità - vedi sotto

Utilizzando GptType

GPT utilizza ID fissi per partizioni speciali. Possiamo usarli per scrivere script portatili, per accedere ai volumi di ripristino o di sistema su qualsiasi computer senza assegnargli una lettera:

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

Volume di recupero:
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: su UEFI, esiste (dovrebbe esserci) anche una partizione MSR, ma non è possibile accedervi poiché non ha un volume né un filesystem:
errore:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



Tre avvertenze:

Get-Volume non elencherà i volumi nascosti a meno che non sia in esecuzione elevata, Get-Partition li elencherà non elevati, ma non è possibile accedervi ulteriormente senza rilievo.

Con Get-ChildItem (ls) Device Path deve essere passato usando l'argomento -LiteralPath (-l). Ciò non è dovuto a "?" carattere speciale. -Path non funziona con Device Path anche se '?' è sfuggito.

Non è possibile eseguire il CD nella directory principale di Device Path. Ma è possibile eseguire il CD nella sua cartella.



Spiegazione e formato completo delle dichiarazioni precedenti

Usa sempre il formato completo in uno script per una migliore leggibilità

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

è l'abbreviazione di:

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

lsè un alias di Get-ChildItem
-lè abbreviato -LiteralPath
? *attribute* -eq "*value*"è un costrutto abbreviato di ? { $_.*attribute* -eq "*value*" }
?è un alias di Where-Object
-Forceviene utilizzato per visualizzare i file nascosti sul volume di recupero

Utilizzo di Get-Partition e Get-Volume:
Get-Partition fornisce il parametro GptType, ma non Label, Get-Volume fornisce Label, ma non GptType

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.