Dostęp do dysku za pomocą identyfikatora woluminu zamiast litery dysku w systemie Windows

31

Czy mogę uzyskać dostęp do dysku za pomocą identyfikatora woluminu zamiast litery dysku w systemie Windows? Może to być bardzo przydatne w przypadku dysków zewnętrznych.

olvin
źródło
W przypadku partycji, do których nie przypisano żadnej litery dysku, identyfikatory woluminów są jedynym sposobem dostępu do nich. Nie można przypisać litery dysku do nowej partycji, jeśli zużyto już 26 liter alfabetu angielskiego przez już istniejące partycje. W takim przypadku będą one nie tylko przydatne, ale będą JEDYNYM sposobem dostępu do nich.
RBT

Odpowiedzi:

42

Możesz użyć mountvolw wierszu polecenia, aby uzyskać identyfikator woluminu, do którego chcesz uzyskać dostęp.

wprowadź opis zdjęcia tutaj

Tych identyfikatorów można użyć do otwarcia okna eksploratora, niezależnie od litery dysku

wprowadź opis zdjęcia tutaj

Aby utworzyć skrót do dysku, utwórz nowy plik wsadowy z tą zawartością:

start \\?\Volume{1b3b1146-4076-11e1-84aa-806e6f6e6963}\
Gen
źródło
Tak, tego długo szukałem! Teraz muszę tylko wywołać polecenie mountvol, aby uzyskać wszystkie identyfikatory woluminów. Następnie za pomocą ścieżki typu „\\? \ Volume {}” mogę uzyskać dostęp do dysku z wymaganym identyfikatorem (jeśli jest dostępny). Dziękuję Ci!
olvin
1
Tak, ta metoda działa z Eksploratorem i podczas kopiowania plików za pomocą wiersza poleceń. Ale niestety TrueCrypt nie akceptuje takiej ścieżki do pliku klucza = (
olvin
Niestety działa to tylko wtedy, gdy masz uruchomiony NetBIOS i RPC Locator, więc to nie zadziała, jeśli zahartowałeś system Windows. Ponadto prawdopodobnie będziesz musiał uruchomić kilka usług sieciowych i sterowników, aby z niego korzystać (stacja robocza, przeglądarka komputera, serwer, pomocnik NetBIOS TCP / IP, NetBT, DHCP, DNS itp.) To głupie, ponieważ są one tomy lokalne. :-|
Synetech,
1
Cóż .. TrueCrypt obsługuje to w celu niezawodnego montażu właściwego dysku:@"%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v \\?\Volume{4033aabd-1234-5678-a1234567890}\ /lr /c n /q
Frank Nocke,
@ Synetech: Nie mogę tego powielić; odpowiedź jako opublikowana działa dla mnie dobrze, nawet z NetBIOS i RPC Locator, a wszystko inne, co mogłem znaleźć w sieci, było wyłączone. (Być może myliłeś ścieżkę jądra ze ścieżką UNC? A może to był problem tylko we wcześniejszej wersji systemu Windows?)
Harry Johnston
9

W programie PowerShell użyj Get-Volumepotoku przez Format-List:

get-volume | fl 

da ci wszystko, czego potrzebujesz, na przykład ten SYSTEM RESERVEDwolumin na jednym z moich komputerów:

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
źródło
aby zobaczyć ukryte / systemowe woluminy, musisz uruchomić na podwyższeniu, patrz Ostrzeżenia w mojej odpowiedzi
papo
4

Wolę używać bezwzględnych liter dysków w przypadku dysków flash. Istnieją odpowiednie zadania dla prawie każdego, chyba że masz 20 lub więcej dysków flash.

W systemie Windows 7 użyj systemu Windows do sformatowania i przypisania etykiety dysku lub jeśli dysk ma już etykietę, użyj wiersza polecenia „Etykieta (litera dysku), aby nadać jej wybraną etykietę.

Następnie przejdź do panelu sterowania, systemu i bezpieczeństwa, narzędzi administracyjnych, zarządzania komputerem, zarządzania dyskami, aby wybrać dysk z etykietą utworzoną przez kliknięcie dysku prawym przyciskiem myszy, wybierz zmianę litery dysku i ścieżek oraz przypisz wolumin do określonej litery dysku. Zawsze będzie montowany do tej litery dysku, jeśli jest dostępna.

Oznaczyłem dyski, które zawierały dane na żywo, a etykietowanie nie wpłynęło w żaden sposób na istniejące dane. Wygląda na to, że działa tak samo jak na dyskietkach w dawnych dobrych czasach

Pączek
źródło
0

Korzystanie z etykiety

Możesz uzyskać dostęp do napędu dysku za pomocą jego etykiety w PS w następujący sposób:

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

Jest skrócony, użyj pełnego formatu w skrypcie dla lepszej czytelności - patrz poniżej

Korzystanie z GptType

GPT używa stałych identyfikatorów dla specjalnych partycji. Możemy ich używać do pisania przenośnych skryptów, aby uzyskać dostęp do woluminów odzyskiwania lub systemu na dowolnym komputerze bez przypisywania litery:

Głośność systemu:
ls -l (Get-Partition | ? GptType -eq "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}").AccessPaths[0]

Wolumen odzyskiwania:
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: w UEFI istnieje (powinna być) również partycja MSR, ale nie można uzyskać do niej dostępu, ponieważ nie ma woluminu ani systemu plików:
błąd:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



Trzy zastrzeżenia:

Get-Volume nie wyświetli ukrytych woluminów, chyba że jest uruchomiony z podwyższonym poziomem uprawnień, Get-Partition wyświetli je jako niewzniesione, ale i tak nie będzie można uzyskać do nich dostępu.

Z Get-ChildItem (ls) Ścieżkę urządzenia należy przekazać za pomocą argumentu -LiteralPath (-l). Nie dzieje się tak z powodu „?” specjalny charakter. -Path po prostu nie działa ze ścieżką urządzenia, nawet jeśli „?” uciekł.

Nie można włożyć płyty CD do katalogu głównego ścieżki urządzenia. Ale możliwe jest CD do jego folderu.



Wyjaśnienie i pełny format powyższych instrukcji

Zawsze używaj pełnego formatu w skrypcie dla lepszej czytelności

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

jest skrótem od:

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

lsjest Get-ChildItem
-lskróconym aliasem -LiteralPath
? *attribute* -eq "*value*"skróconym konstruktem tego ? { $_.*attribute* -eq "*value*" }
?jest alias Where-Object
-Forcesłużący do wyświetlania ukrytych plików na woluminie odzyskiwania

Korzystanie z Get-Partition i Get-Volume:
Get-Partition zapewnia parametr GptType, ale nie Label, Get-Volume daje Label, ale nie GptType

papo
źródło