Menemukan huruf drive dari file xvhd atau vhd yang paling baru dipasang dalam batch?

2

saya menemukan cara-cara praktis ini untuk me-mount / unmount a xvhd atau vhd file dalam file command prompt / batch.

Namun; itu masih meninggalkan saya dengan satu pertanyaan; dengan asumsi saya menentukan file yang ingin saya mount secara langsung; bagaimana cara mengetahui huruf drive apa yang ditugaskan menggunakan command prompt?

Jadi jika saya bisa masuk DiskPart dan jalankan perintah berikut:

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.

Maka saya tidak dapat langsung menetapkan huruf drive ke volume yang baru dilampirkan ... namun, saya dapat memilihnya dengan memanggilnya dengan nomor volumenya:

DISKPART> SELECT Volume 8

Volume 8 is the selected volume.

DISKPART> ASSIGN LETTER=X

DiskPart successfully assigned the drive letter or mount point.

Melihat saya ingin menjalankan ini sebagai skrip ... bagaimana saya bisa memilih yang baru dipasang xvhd dan berikan huruf drive?

Orang-orang bermain-main dengan sistem huruf drive sepanjang waktu, dengan memetakan dan membuka pemetaan saham, dan dengan memasukkan / melepas thumb drive.

Jadi bagaimana saya bisa melakukan ini dengan aman mengingat masalah dengan pemetaan drive mungkin tidak konsisten, dan fakta bahwa ketika saya membuat cadangan status sistem, itu tidak menetapkan volume label saya?

P.S. Tujuan saya di sini adalah untuk mengotomatisasi ini sehingga dapat dipanggil oleh skrip, melakukan pencadangan status sistem (yang sudah saya berhasilkan), dan kemudian me-mount xvhd dari drive, hapus sebagian besar profil pengguna darinya (ditangani dengan cadangan terpisah) dan kemudian unmount sehingga dapat didukung oleh program lain, dan dikembalikan ke mesin jika terjadi bencana; (juga saya akan mengembalikan profil pengguna dari cadangan terpisah ).

leeand00
sumber

Jawaban:

2

Menemukan huruf drive yang paling baru dipasang xvhd atau vhd file dalam batch? Bagaimana cara mengetahui huruf drive apa yang ditugaskan menggunakan command prompt?

Pipa keluaran Get-DiskImage ke Get-Volume atau Get-Disk dan   Dapatkan-Partisi:

Untuk file ISO:

GET-DISKIMAGE filename.iso | GET-VOLUME

Untuk file VHD:

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

Sumber


Contoh

Berdasarkan artikel yang Anda berikan saya memasukkan logika PowerShell ke dalam skrip batch di bawah ini untuk memasukkan secara dinamis mendapatkan huruf drive yang digunakan untuk me-mount file VHD atau ISO sehingga Anda kemudian dapat menggunakannya sebagai nama variabel ke CD ke direktori untuk menjalankan perintah Anda secara implisit atau Anda dapat menggunakannya untuk mengatur huruf drive secara eksplisit untuk apa pun yang Anda perlukan untuk perintah yang akan Anda gunakan, dll.

Naskah

@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

Sumber Daya Lebih Lanjut

Pimp Juice IT
sumber
Anda harus dapat menggunakan GET-DISKIMAGE filename.vhd | GET-DISK | GET-PARTITION sintaks dan hanya memasukkannya ke dalam skrip dinamis untuk dijalankan dengan Powershell sesuai. Saya membuat asumsi Anda terbiasa dengan skrip batch dan Powershell tetapi beri tahu saya jika Anda perlu membantu dengan bagian itu - ini seharusnya tugas yang mudah dan rumit.
Pimp Juice IT
Ah! Maaf saya mengubah beberapa hal ... tentang apa yang sudah saya coba ... jadi Anda mengatakan saya harus menggunakan PowerShell?
leeand00
1
@ leeand00 Cukup gabungkan perintah Powershell ke dalam skrip batch yang sesuai. Saya akan menambahkan contoh yang diperbarui ... beri saya waktu sebentar ...
Pimp Juice IT
@ leeand00 Tidak masalah, saya harus mengurus beberapa hal, maaf untuk menunggu. Semoga itu akan membantu Anda dapat menjalankan dari skrip batch yang sesuai. Saya menggunakannya mirip dengan skrip lain untuk kebutuhan saya dalam beberapa kasus. Saya baru saja menyuruhnya untuk mengatur huruf drive sebagai variabel dan kemudian melakukan a CD /D ke jalur itu tetapi Anda juga dapat menggunakannya sebagai "%DriveLetter%:\" dan menggunakannya untuk bagian huruf kandar di jalur yang ditentukan secara eksplisit dalam logika skrip Anda. Biarkan saya tahu bagaimana kelanjutannya saat Anda melakukannya. Saya berkomentar ISO mount logic tetapi meninggalkannya di sana kalau-kalau ada orang lain menggunakan ISO dan membutuhkannya.
Pimp Juice IT