กำลังค้นหาอักษรชื่อไดรฟ์ของไฟล์ xvhd หรือ vhd ที่ติดตั้งล่าสุดในแบตช์?


2

ฉันพบวิธีที่สะดวกเหล่านี้ในการเมานต์ / เลิกเมานท์xvhdหรือvhdไฟล์ใน command prompt / batch file

อย่างไรก็ตาม; ที่ยังทิ้งฉันด้วยคำถามเดียว; สมมติว่าฉันกำลังระบุไฟล์ที่ฉันต้องการจะเมานท์โดยตรง; ฉันจะค้นหาตัวอักษรไดรฟ์ที่กำหนดโดยใช้พรอมต์คำสั่งได้อย่างไร

ดังนั้นถ้าฉันสามารถเข้าไป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และกำหนดตัวอักษรไดรฟ์ได้อย่างไร

ผู้คนต่างก็ตะลึงไปกับระบบอักษรไดรฟ์ตลอดเวลาโดยการแมปและยกเลิกการแม็ปการแชร์และโดยการแทรก / ลบธัมบ์ไดรฟ์

ดังนั้นฉันจะทำสิ่งนี้ได้อย่างปลอดภัยเมื่อพิจารณาปัญหาของการแมปไดรฟ์ที่อาจไม่สอดคล้องกันและความจริงที่ว่าเมื่อฉันสร้างการสำรองข้อมูลสถานะระบบมันไม่ได้กำหนดป้ายกำกับปริมาณของฉัน

ป.ล. เป้าหมายของฉันที่นี่คือการทำสิ่งนี้โดยอัตโนมัติเพื่อให้สคริปต์สามารถทำการสำรองข้อมูลสถานะระบบ (ซึ่งฉันทำสำเร็จแล้ว) จากนั้นติดตั้งxvhdไดรฟ์ลบโปรไฟล์ผู้ใช้ส่วนใหญ่ออกจากมัน (จัดการ โดยการสำรองข้อมูลแยกต่างหาก) จากนั้นยกเลิกการต่อเชื่อมเพื่อให้สามารถสำรองข้อมูลโดยโปรแกรมอื่นและเรียกคืนไปยังเครื่องในกรณีที่เกิดภัยพิบัติ (ฉันจะคืนค่าโปรไฟล์ผู้ใช้จากข้อมูลสำรองแยกต่างหาก )

คำตอบ:


2

กำลังค้นหาอักษรกำกับไดรฟ์ของ ไฟล์ที่ติดตั้งล่าสุด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 แบบไดนามิกเพื่อให้คุณสามารถใช้เป็นชื่อตัวแปรลงในไดเรกตอรีเพื่อเรียกใช้คำสั่งของคุณ โดยปริยายหรือคุณสามารถใช้มันเป็นอย่างอื่นเพื่อกำหนดอักษรระบุไดรฟ์สำหรับสิ่งที่คุณต้องการสำหรับคำสั่งที่คุณใช้กับ ฯลฯ

ต้นฉบับ

@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

แหล่งข้อมูลเพิ่มเติม


คุณควรจะสามารถใช้GET-DISKIMAGE filename.vhd | GET-DISK | GET-PARTITIONไวยากรณ์และรวมมันไว้ในสคริปต์แบบไดนามิกเพื่อให้ทำงานกับ Powershell ได้ ฉันตั้งสมมติฐานว่าคุณคุ้นเคยกับชุดสคริปต์และ Powershell แต่แจ้งให้เราทราบหากคุณต้องการความช่วยเหลือในส่วนนั้น - งานนี้ควรเป็นเรื่องที่ง่าย
Pimp Juice IT

Ah! ขออภัยฉันเปลี่ยนบางสิ่ง ... เกี่ยวกับสิ่งที่ฉันได้ลองไปแล้ว ... คุณกำลังบอกว่าฉันควรใช้ PowerShell แทน?
leeand00

1
@ leeand00 เพียงรวมคำสั่ง Powershell ลงในชุดสคริปต์ตามนั้น ฉันจะเพิ่มตัวอย่างที่อัปเดตแล้ว ... ให้เวลาฉันสักครู่ ...
Pimp Juice IT

@ leeand00 ไม่มีปัญหาฉันต้องดูแลบางอย่างดังนั้นขอโทษสำหรับการรอ หวังว่าจะช่วยให้คุณสามารถเรียกใช้จากชุดสคริปต์ตาม ฉันใช้มันคล้ายกับสคริปต์อื่น ๆ สำหรับความต้องการของฉันในบางกรณี ฉันเพิ่งบอกให้ตั้งค่าตัวอักษรชื่อไดรฟ์เป็นตัวแปรจากนั้นทำCD /Dไปยังเส้นทางนั้น แต่คุณสามารถใช้เป็น"%DriveLetter%:\"และใช้ส่วนนั้นสำหรับตัวอักษรชื่อไดรฟ์ในเส้นทางที่คุณระบุไว้อย่างชัดเจนในตรรกะสคริปต์ของคุณ แจ้งให้เราทราบว่ามันไปได้อย่างไรเมื่อคุณได้รับมัน ฉันใส่ความคิดเห็นเกี่ยวกับตรรกะการเมานต์ ISO แต่ก็ทิ้งไว้ที่นั่นในกรณีที่คนอื่นใช้ ISO และต้องการ
Pimp Juice IT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.