Доступ до дисковода, використовуючи ідентифікатор гучності, а не літеру диска в Windows


31

Чи можна отримати доступ до дисковода, використовуючи ідентифікатор гучності, а не літеру диска в Windows? Це може бути дуже корисно для зовнішніх накопичувачів.


Для розділів, на яких не присвоєно жодної літери диска, ідентифікатори томів є єдиним способом доступу до них. Ви не можете призначити букву диска новому розділу, якщо ви вже вжили 26 літер англійського алфавіту через уже наявні розділи. Тож у такому випадку вони будуть не просто корисними, але будуть єдиним способом доступу до них.
RBT

Відповіді:


42

Ви можете використовувати mountvolв командному рядку для отримання ідентифікатора обсягу, до якого ви хочете отримати доступ.

введіть тут опис зображення

Ці ідентифікатори можна використовувати для відкриття вікна провідника, незалежного від букви диска

введіть тут опис зображення

Щоб створити ярлик до диска, створіть новий пакетний файл із цим вмістом:

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

Так, це я довго шукав! Тепер мені просто потрібно викликати команду mountvol, щоб отримати всі ідентифікатори томів. Потім, використовуючи шлях на зразок "\\? \ Том {}", я можу отримати доступ до диска з необхідним ідентифікатором (якщо він представлений). Дякую!
олвін

1
Так, цей метод працює з Провідником і під час копіювання файлів з командного рядка. Але на жаль TrueCrypt не приймає такий шлях до
keyfile

На жаль, він працює лише у тому випадку, якщо у вас NetBIOS та RPC Locator працює, тому це не спрацює, якщо ви загартували Windows. Крім того, вам, мабуть, потрібно буде тримати кілька сервісів, пов’язаних з мережею та драйверами, які працюватимуть для його використання (Workstation, Computer Browser, Server, TCP / IP NetBIOS Helper, NetBT, DHCP, DNS тощо). Це нерозумно, оскільки це місцеві томи. :-|
Synetech

1
Ну .. TrueCrypt підтримує це для надійного встановлення правильного диска:@"%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v \\?\Volume{4033aabd-1234-5678-a1234567890}\ /lr /c n /q
Frank Nocke

@Synetech: я не можу це повторити; відповідь як розміщена працює для мене добре навіть у NetBIOS та RPC Locator, і все інше, що стосується мережі, я міг знайти, відключений. (Можливо, ви помилялися на шляху ядра для шляху до UNC? Або це була лише проблема в попередній версії Windows?)
Гаррі Джонстон,

9

У PowerShell , використання Get-Volumeконвеєр через Format-Listтак:

get-volume | fl 

дасть вам все необхідне, наприклад, цей SYSTEM RESERVEDтом на одній з моїх машин:

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       :

щоб побачити приховані / системні томи, ви повинні бігти піднятими, дивіться Caveats у моїй відповіді
papo

4

Я вважаю за краще використовувати абсолютні літери диска для флеш-дисків. Є адекватні завдання майже для будь-кого, якщо у вас немає 20 і більше флеш-дисків.

У Windows 7 використовуйте Windows для форматування та присвоєння мітки накопичувача або якщо на диску вже є мітка, використовуйте командний рядок "Мітка (буква диска), щоб надати їй мітку на ваш вибір.

Потім перейдіть до панелі управління, системи та безпеки, адміністративних інструментів, управління комп’ютером, управління диском, щоб вибрати диск із створеною міткою, натиснувши правою кнопкою миші на диску, виберіть зміну літери та шляхів диска та призначте гучність певній букві диска. Він завжди буде кріпитися до цієї літери диска, якщо вона є.

У мене є мітки накопичувачів, які містили живі дані, і маркування жодним чином не впливало на існуючі дані. Здається, працює так, як це робилося на дискетах ще в старі добрі часи


0

Використання мітки

Ви можете отримати доступ до дисковода, використовуючи його мітку в PS так:

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

Це скорочено, використовуйте повний формат у сценарії для кращої читальності - див. Нижче

Використання GptType

GPT використовує фіксовані ідентифікатори для спеціальних розділів. Ми можемо використовувати їх для написання портативних сценаріїв, для доступу до томів відновлення або системи на будь-якому комп’ютері, не присвоюючи йому лист:

Об'єм системи:
ls -l (Get-Partition | ? GptType -eq "{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}").AccessPaths[0]

Обсяг відновлення:
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: в UEFI є (повинен бути) і розділ MSR, але ви не можете отримати доступ до нього, оскільки він не має тома, ані файлової системи:
error:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



Три застереження:

Get-Volume не буде перераховувати приховані томи, якщо вони не працюють підвищеними, Get-Partition буде перераховувати їх не підвищеними, але ви все одно не можете отримати доступ до них.

З Get-ChildItem (ls) Шлях пристрою повинен бути пройдений за допомогою аргументу -LiteralPath (-l). Це не через '?' особливий характер. -Path просто не працює з Device Path, навіть якщо "?" втік.

Неможливо компакт-диск в корінь шляху пристрою. Але можна CD у свою папку.



Пояснення та повний формат вищезазначених висловлювань

Завжди використовуйте повний формат у сценарії для кращої читальності

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

скорочено:

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

lsпсевдонім Get-ChildItem
-lукорочений -LiteralPath
? *attribute* -eq "*value*"скорочений конструкція ? { $_.*attribute* -eq "*value*" }
?є псевдонім Where-Object
-Forceвикористовується для перегляду прихованих файлів на томі відновлення

Використання Get-Partition і Get-Volume:
Get-Partition надає параметр GptType, але не Label, Get-Volume дає Label, але не GptType

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.