web-dev-qa-db-ja.com

最近マウントされたxvhdまたはvhdファイルのドライブ文字をバッチで見つけますか?

これらの便利な方法 コマンドプロンプト/バッチファイルでxvhdまたはvhdファイルをマウント/アンマウントすることがわかりました。

しかしながら;それでも私には1つの質問があります。直接マウントするファイルを指定していると仮定します。コマンドプロンプトを使用して、割り当てられたドライブ文字を確認するにはどうすればよいですか?

したがって、DiskPartに移動して、次のコマンドを実行できる場合:

DISKPART> select vdisk FILE="F:\WindowsImageBackup\leeand00-pc\Backup 2017-01-10 031515\924cde0a-0000-0000-0000-50c603000000.vhdx"

DiskPart successfully selected the virtual disk file.

DISKPART> ATTACH VDISK

  100 percent completed

DISKPART> LIST VOLUME

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  No Media
  Volume 1     H                       DVD-ROM         0 B  No Media
  Volume 2         SYSTEM RESE  NTFS   Partition    100 MB  Healthy    System
  Volume 3     C                NTFS   Partition    159 GB  Healthy    Boot
  Volume 4     F   wbadmin_bac  NTFS   Partition     57 GB  Healthy
  Volume 5         PQSERVICE    NTFS   Partition     15 GB  Healthy    Hidden
  Volume 6     G   FreeAgent D  NTFS   Partition   1397 GB  Healthy
  Volume 7     D                       Removable       0 B  No Media
  Volume 8                      NTFS   Partition    159 GB  Healthy

DISKPART> ASSIGN LETTER=X

There is no volume specified.
Please select a volume and try again.

次に、新しく接続されたボリュームにドライブ文字をすぐに割り当てることはできません...ただし、ボリューム番号で呼び出すことでドライブ文字を選択できます。

DISKPART> SELECT Volume 8

Volume 8 is the selected volume.

DISKPART> ASSIGN LETTER=X

DiskPart successfully assigned the drive letter or mount point.

これをスクリプトとして実行したいので...新しくマウントされたxvhdを選択して、ドライブ文字を割り当てるにはどうすればよいですか?

人々は、共有のマッピングとマッピング解除、およびサムドライブの挿入/取り外しによって、常にドライブ文字システムをいじくり回しています。

それでは、ドライブマッピングの問題がおそらく一貫していないこと、およびシステム状態のバックアップを作成するときにボリュームにラベルが割り当てられないという事実を考慮して、これを安全に行うにはどうすればよいですか?

P.S.ここでの私の目標は、これを自動化してスクリプトで呼び出すことができるようにし、システム状態のバックアップ(すでに成功しています)を実行してから、ドライブのxvhdをマウントし、ほとんどのユーザーを削除することです。そこからプロファイルを作成し(別のバックアップで処理)、マウントを解除して別のプログラムでバックアップし、災害が発生した場合にマシンに復元できるようにします。 (また、復元します 別のバックアップからのユーザープロファイル )。

3
leeand00

最後にマウントされたxvhdまたはvhdファイルのドライブ文字をバッチで検索しますか?コマンドプロンプトを使用して、割り当てられたドライブ文字を確認するにはどうすればよいですか?

Get-DiskImageの出力をGet-VolumeまたはGet-DiskとGet-Partitionにパイプします。

ISOファイルの場合:

GET-DISKIMAGE filename.iso | GET-VOLUME

VHDファイルの場合:

GET-DISKIMAGE filename.vhd | GET-DISK | GET-PARTITION

ソース


提供した記事に基づいて、PowerShellロジックを以下のバッチスクリプトに組み込み、VHDまたはISOファイルのマウントに使用するドライブ文字を動的に取得してCDの変数名として使用できるようにしました。ディレクトリに移動してコマンドを暗黙的に実行するか、それ以外の方法で使用して、使用するコマンドなどに必要なドライブ文字を明示的に設定できます。

スクリプト

@ECHO OFF

SETLOCAL

SET DiskPartScript="%TEMP%DiskpartScript.txt"

ECHO SELECT VDISK FILE="%~1" > %DiskPartScript% 
ECHO ATTACH VDISK >> %DiskPartScript%

DiskPart /s %DiskPartScript%

SET PowershellScript="%TEMP%\PowerShellScript.ps1"

:: -- Use below for VHD 
ECHO GET-DISKIMAGE "%~1" | GET-DISK | GET-PARTITION | Select -ExpandProperty DriveLetter > "%PowershellScript%" 

:: -- Use below for ISO 
::ECHO GET-DISKIMAGE "%~1" | get-VOLUME | Select -ExpandProperty DriveLetter > "%PowershellScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 
CD /D "%PowerShellDir%" 
FOR /F "DELIMS=" %%A IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PowershellScript%'"') DO SET "DriveLetter=%%A"

CD /D "%DriveLetter%:\" 
<Commands> 
<Commands>

ENDLOCAL

その他のリソース

3
Pimp Juice IT