Acesso a uma unidade de disco usando o ID do volume em vez de uma letra de unidade no Windows

31

Posso acessar uma unidade de disco usando o ID do volume em vez de uma letra de unidade no Windows? Pode ser muito útil para unidades externas.

olvina
fonte
Para as partições que não possuem nenhuma letra de unidade atribuída, os IDs de volume são a única maneira de acessá-las. Você não pode atribuir a letra da unidade a uma nova partição se já tiver consumido 26 letras do alfabeto inglês nas partições já existentes. Portanto, nesse caso, eles não serão apenas úteis, mas serão a ÚNICA maneira de acessá-los.
RBT

Respostas:

42

Você pode usar mountvolno prompt de comando para obter o ID do volume que deseja acessar.

insira a descrição da imagem aqui

Esses IDs podem ser usados ​​para abrir uma janela do explorer, independente da letra da unidade

insira a descrição da imagem aqui

Para criar um atalho para a unidade, crie um novo arquivo em lotes com este conteúdo:

start \\?\Volume{1b3b1146-4076-11e1-84aa-806e6f6e6963}\
Gene
fonte
Sim, é o que eu procurei por muito tempo! Agora só preciso chamar o comando mountvol para obter todos os IDs de volume. Em seguida, usando um caminho como "\\? \ Volume {}", posso acessar a unidade com o ID necessário (se houver). Obrigado!
#
11
Sim, esse método funciona com o Explorer e ao copiar arquivos com linha de comando. Mas, infelizmente, o TrueCrypt não aceita esse caminho para um arquivo de chave = (
olvin
Infelizmente, ele só funciona se você tiver o NetBIOS e o Localizador de RPC em execução, portanto, isso não funcionará se você tiver fortalecido o Windows. Além disso, você provavelmente precisará manter vários serviços e drivers relacionados à rede em execução para usá-lo (estação de trabalho, navegador de computador, servidor, NetBIOS Helper TCP / IP, NetBT, DHCP, DNS, etc.) volumes locais. :-|
Synetech
11
Bem .. O TrueCrypt suporta isso para montar de forma confiável a unidade correta:@"%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v \\?\Volume{4033aabd-1234-5678-a1234567890}\ /lr /c n /q
Frank Nocke 11/11
@ Synetech: Não consigo replicar isso; a resposta postada funciona bem para mim, mesmo com o NetBIOS e o Localizador RPC, e tudo o mais que eu pudesse encontrar relacionado à rede, desativado. (Talvez você estava confundindo o caminho do kernel para um caminho UNC Ou foi apenas um problema em uma versão anterior do Windows?)
Harry Johnston
9

No PowerShell , use Get-Volumecanalizado da Format-Listseguinte maneira:

get-volume | fl 

lhe dará tudo o que você precisa, por exemplo, este SYSTEM RESERVEDvolume em uma das minhas máquinas:

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
fonte
para ver volumes ocultos / do sistema, você deve executar elevados, consulte Advertências na minha resposta
papo
4

Prefiro usar letras absolutas para unidades flash. Existem atribuições adequadas para praticamente qualquer pessoa, a menos que você tenha 20 ou mais unidades flash.

No Windows 7, use o Windows para formatar e atribuir uma etiqueta de unidade ou, se a unidade já tiver uma etiqueta, use a linha de comando "Etiqueta (letra da unidade) para fornecer uma etiqueta de sua escolha.

Em seguida, vá ao painel de controle, sistema e segurança, ferramentas administrativas, gerenciamento de computadores e gerenciamento de disco para selecionar a unidade com a etiqueta criada clicando com o botão direito do mouse na unidade, selecione alterar letra e caminhos da unidade e atribua o volume a uma letra de unidade específica. Ele sempre será montado nessa letra de unidade, se estiver disponível.

Eu rotulei unidades que continham dados ativos e a rotulação não afetou os dados existentes de forma alguma. Parece funcionar exatamente como nos disquetes nos velhos tempos

Bud
fonte
0

Usando uma etiqueta

Você pode acessar uma unidade de disco usando seu Label no PS desta forma:

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

Foi reduzido, use o formato completo em um script para melhor legibilidade - veja abaixo

Usando GptType

O GPT usa IDs fixos para partições especiais. Podemos usá-los para escrever scripts portáteis, para acessar volumes de Recuperação ou Sistema em qualquer computador sem atribuir uma carta a ele:

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

Volume de recuperação:
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: no UEFI, existe (deveria haver) também partição MSR, mas você não pode acessá-lo, pois ele não possui um volume nem um sistema de arquivos:
error:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



Três advertências:

O Get-Volume não listará volumes ocultos, a menos que esteja executando elevado, o Get-Partition os listará não elevados, mas você não poderá acessá-los ainda mais, mesmo assim.

Com o dispositivo Get-ChildItem (ls), o caminho deve ser passado usando o argumento -LiteralPath (-l). Isso não é por causa de '?' caractere especial. -Path simplesmente não funciona com o caminho do dispositivo, mesmo que '?' é escapado.

Não é possível fazer o CD na raiz do caminho do dispositivo. Mas é possível colocar o CD em sua pasta.



Explicação e formato completo das instruções acima

Sempre use o formato completo em um script para melhor legibilidade

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

é a abreviação de:

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

lsé um alias de Get-ChildItem
-lé encurtado -LiteralPath
? *attribute* -eq "*value*"é construção encurtada de ? { $_.*attribute* -eq "*value*" }
?é um alias de Where-Object
-Forceé usado para ver arquivos ocultos no volume de recuperação

Uso de Get-Partition e Get-Volume:
Get-Partition fornece o parâmetro GptType, mas não Label, Get-Volume fornece Label, mas não GptType

papo
fonte