Доступ к диску с использованием идентификатора тома вместо буквы диска в Windows


31

Могу ли я получить доступ к диску, используя идентификатор тома вместо буквы диска в Windows? Это может быть очень полезно для внешних накопителей.


Для разделов, которым не назначена буква диска, идентификаторы томов являются единственным способом доступа к ним. Вы не можете назначить букву диска новому разделу, если вы уже использовали 26 букв английского алфавита через уже существующие разделы. Так что в таком случае они будут не просто полезны, а будут ЕДИНСТВЕННЫМ способом получить к ним доступ.
RBT

Ответы:


42

Вы можете использовать mountvolв командной строке, чтобы получить идентификатор тома, к которому вы хотите получить доступ.

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

Эти идентификаторы могут быть использованы для открытия окна проводника, независимо от буквы диска

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

Чтобы создать ярлык на диске, создайте новый командный файл с таким содержимым:

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

Да, это то, что я искал долго! Теперь мне просто нужно вызвать команду mountvol, чтобы получить все идентификаторы томов. Затем, используя путь типа "\\? \ Volume {}", я могу получить доступ к диску с необходимым ID (если он есть). Спасибо!
Олвин

1
Да, этот метод работает с проводником и при копировании файлов из командной строки. Но, к сожалению, TrueCrypt не принимает такой путь к
ключевому файлу

К сожалению, он работает только в том случае, если у вас запущены NetBIOS и RPC Locator, поэтому он не будет работать, если у вас усиленная Windows. Кроме того, вам, вероятно, потребуется сохранить несколько сетевых служб и драйверов, работающих для его использования (рабочая станция, обозреватель компьютеров, сервер, TCP / IP, помощник NetBIOS, NetBT, DHCP, DNS и т. Д.). Это глупо, поскольку местные тома. :-|
Synetech

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

@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       :

чтобы увидеть скрытые / системные тома, вы должны работать с повышенными
правами

4

Я предпочитаю использовать абсолютные буквы дисков для флешек. Есть адекватные задания для почти любого, если у вас есть 20 или более флешек.

В Windows 7 используйте Windows для форматирования и назначения метки диска или, если диск уже имеет метку, используйте командную строку «Метка (буква диска), чтобы присвоить ей метку по вашему выбору.

Затем перейдите в панель управления, система и безопасность, инструменты администрирования, управление компьютером, управление дисками, чтобы выбрать диск с меткой, которую вы создали, щелкнув правой кнопкой мыши на диске, выберите изменить букву диска и пути и назначить том определенной букве диска. Он всегда будет подключаться к той букве диска, если она доступна.

Я пометил диски, которые содержали живые данные, и маркировка никак не повлияла на существующие данные. Кажется, это работает так же, как и на дискетах в старые добрые времена.


0

Использование метки

Вы можете получить доступ к диску, используя его метку в PS следующим образом:

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

Это сокращено, используйте полный формат в скрипте для лучшей читаемости - см. Ниже

Использование GptType

GPT использует фиксированные идентификаторы для специальных разделов. Мы можем использовать их для написания переносимых скриптов, для доступа к томам Recovery или System на любом компьютере, не назначая ему буквы:

Объем системы:
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 в корень пути к устройству. Но можно записать 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.