web-dev-qa-db-ja.com

Windowsでドライブ文字の代わりにボリュームIDを使用してディスクドライブにアクセスする

Windowsでドライブ文字の代わりにボリュームIDを使用してディスクドライブにアクセスできますか?外付けドライブに非常に役立ちます。

35
olvin

コマンドプロンプトでmountvolを使用して、アクセスするボリュームのIDを取得できます。

enter image description here

このIDを使用して、ドライブ文字に関係なく、エクスプローラウィンドウを開くことができます。

enter image description here

ドライブへのショートカットを作成するには、次の内容で新しいバッチファイルを作成します。

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

PowerShell では、- Get-Volume パイプスルー Format-List このように:

get-volume | fl 

あなたが必要とするすべてをあなたに与えます、例えばこれSYSTEM RESERVED私のマシンの1つのボリューム:

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       :
9
Aaron

フラッシュドライブには絶対ドライブ文字を使用することを好みます。 20台以上のフラッシュドライブがない限り、ほぼすべての人に適切な割り当てがあります。

Windows 7では、Windowsを使用してドライブラベルをフォーマットして割り当てます。ドライブにすでにラベルが付いている場合は、コマンドラインの「ラベル(ドライブ文字)」を使用して、選択したラベルを付けます。

次に、コントロールパネル、システムとセキュリティ、管理ツール、コンピューター管理、ディスク管理に移動し、ドライブを右クリックして作成したラベルの付いたドライブを選択し、ドライブ文字とパスの変更を選択して、ボリュームを特定のドライブ文字に割り当てます。使用可能な場合は、常にそのドライブ文字にマウントされます。

ライブデータを含むドライブにラベルを付けましたが、そのラベル付けは既存のデータにまったく影響を与えませんでした。古き良き時代のフロッピーと同じように機能するようです

4
Bud

ラベルを使用する

次のようにPSのラベルを使用してディスクドライブにアクセスできます。

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

短縮されています。読みやすくするためにスクリプトでは完全な形式を使用してください-以下を参照してください

GptTypeの使用

GPTは特別なパーティションに固定IDを使用します。これらを使用して、移植可能なスクリプトを記述し、文字を割り当てずに任意のコンピューターの回復ボリュームまたはシステムボリュームにアクセスできます。

システムボリューム:
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パーティションもあります(あるはずです)が、ボリュームもファイルシステムもないため、MSRパーティションにアクセスできません。
エラー:ls -l ((Get-Partition | ? GptType -eq "{e3c9e316-0b5c-4db8-817d-f92df00215ae}").AccessPaths[0]) -Force



3つの警告:

Get-Volumeは、管理者特権で実行されていない限り、非表示のボリュームを一覧表示しません。Get-Partitionは、昇格されていないボリュームを一覧表示しますが、それ以上昇格されていないボリュームにはアクセスできません。

Get-ChildItem(ls)では、-LiteralPath引数(-l)を使用してデバイスパスを渡す必要があります。これは '?'のせいではありません特殊文字。 -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])

lsGet-ChildItemのエイリアスです
-lは短縮されます-LiteralPath
? *attribute* -eq "*value*"? { $_.*attribute* -eq "*value*" }の短縮構成です
?Where-Objectのエイリアスです
-Forceは、復元ボリューム上の隠しファイルを表示するために使用されます

Get-PartitionとGet-Volumeの使用:
Get-PartitionはGptTypeパラメータを提供しますが、Labelは提供しません。Get-VolumeはLabelを提供しますが、GptTypeは提供しません

0
papo