Làm cách nào tôi có thể gắn ISO thông qua PowerShell / lập trình?


Câu trả lời:


46

Gắn ISO từ dấu nhắc lệnh (chỉ dành cho Windows 8/2012 trở lên)

Nếu bạn đang ngồi tại một dấu nhắc lệnh và cần gắn ISO, hãy chạy lệnh sau:

PowerShell Mount-DiskImage

Điều này sẽ gọi một lệnh ghép ngắn PowerShell. Bạn sẽ được nhắc về đường dẫn của ISO bạn muốn gắn kết. Khi bạn đã hoàn tất, để trống cái cuối cùng và đẩy Enter.

chạy lệnh ghép ngắn Mount-DiskImage

Tada! Nó được gắn kết:

Tada!  Nó được gắn kết - Các thiết bị có bộ nhớ di động

Bỏ qua ISO

Để loại bỏ ISO khỏi PowerShell chạy Dismount-DiskImagevà làm theo lời nhắc. Nếu bạn chỉ biết ký tự ổ đĩa ở trên đỉnh đầu chứ không phải đường dẫn hình ảnh, hãy sử dụng lệnh này:

Get-Volume [Drive Letter] | Get-DiskImage | Dismount-DiskImage

Lệnh này sẽ lấy ổ đĩa bạn chỉ định, tìm hình ảnh đĩa và tháo gỡ nó.

Các thiết bị có bộ lưu trữ có thể tháo rời được sau khi tháo gỡ ISO

Gắn nhiều ISO và hiển thị ký tự ổ đĩa

Bạn cũng có thể sử dụng -PassThrucờ để lưu trữ dữ liệu được truyền vào lệnh. Chúng ta hãy gắn một vài ISO, hiển thị ký tự ổ đĩa của chúng, thực thi một tệp trên một trong các ổ đĩa và sau đó loại bỏ tất cả các ISO.

Gắn kết các ISO

 $MountedISOs=Mount-DiskImage -PassThru D:\Downloads\Ubuntu.iso,D:\Downloads\Windows8.iso,D:\Downloads\Server2012.iso

Hiển thị thông tin âm lượng cho mỗi ISO được gắn bằng foreachvòng lặp

 foreach($iso in $MountedISOs){Get-Volume -DiskImage $iso}     

Danh sách ổ đĩa J

 ls J:\

Mở tệp tin

 start wubi.exe

đầu ra của foreach / Get-Volume và ls

Để loại bỏ các ISO, sử dụng lệnh sau:

 Dismount-DiskImage $MountedISOs.ImagePath

Kiểm tra ISO

Để xây dựng một tập lệnh đơn giản kiểm tra xem ISO có được đính kèm hay không và trên thực tế là ISO (so với VHD) tôi muốn sử dụng -PassThruđể lưu trữ đối tượng tạm thời và sử dụng Get-DiskImagelệnh để cập nhật trạng thái của đối tượng DiskImage. Điều này sẽ cập nhật Attachedtài sản. Các StorageTypebất động sản sẽ cho bạn biết liệu tập tin là một tiêu chuẩn ISO hoặc VHD theo phần mở rộng tệp.

sử dụng <code> -PassThru </ code> và <code> Get-DiskImage </ code>

Giá StorageTypetrị của VHD là 2, trong đó ISO sẽ trả về 1. Đây là đầu ra của $UbuntuISO:
Đây là đầu ra của <code> $ UbuntuISO </ code>

Đây là đầu ra của $tempsau khi gắn VHD: ( Mount-DiskImagecũng có thể gắn VHD!)
đầu ra của <code> $ temp </ code> sau khi gắn VHD

Lưu ý rằng thuộc Attachedtính ở trên là False, mặc dù Mount-DiskImagelệnh chạy mà không gặp trở ngại.

Hãy nhớ rằng $UbuntuISObiến sẽ không được cập nhật:
biến <code> $ UbuntuISO </ code> không được cập nhật


Technet: Mount-DiskImage

Technet: Dismount-DiskImage


6
Chết tiệt, với tất cả các lệnh ghép ngắn mới trong PowerShell, Windows 8 bắt đầu tích tắc.
sinni800

1
Chúng ta có thể dễ dàng gắn hình ảnh thông qua lệnh C:\>explorer.exe imagepath, ở đây chúng ta không cần PS nhưng để vượt qua chúng ta cần có PS.
avirk

3
Có phải tất cả trong Windows 8? Ý tôi là bạn không cần phải cài đặt các chương trình khác ???
Searush

2
+1 Thật sự rất đẹp! Đây chính xác là những gì tôi đã hy vọng tìm thấy trong Win8 để cuối cùng tôi có thể thêm nó vào cuối câu trả lời của mình ở đây , nhưng bạn đã cứu tôi khỏi rắc rối. Tôi thực sự cần phải bắt đầu nâng cao kỹ năng PS của mình. :) Chỉnh sửa: Có cmdlet nào để kiểm tra các bộ phận bên trong và báo cáo xem tệp có phải là ISO hoặc VHD hay thứ gì khác hoàn toàn không được hỗ trợ không? Hoặc có thể là một cách để kiểm tra giá trị trả về của Mount-DiskImage có lẽ để mã có thể được phân nhánh cho phù hợp?
Karan

1
@Karan Cuối cùng cũng phải tìm ra điều đó = D Sẽ không kiểm tra can đảm, và thật lòng mà nói tôi nghĩ đó là quá mức cần thiết. Nhưng nó sẽ cho chúng tôi biết nếu nó được gắn và ISO so với VHD mà không cần xử lý lỗi PowerShell.
Tanner Faulkner

3

Thông thường, nếu bạn muốn làm điều này thông qua dòng lệnh, bạn cần một phương thức không tương tác. Bạn sẽ muốn sử dụng công -ImagePathtắc để làm điều này.

Vì vậy, lệnh là:

PowerShell Mount-DiskImage -ImagePath \"C:\AbsolutePathTo\Image.iso\"

Hãy nhớ rằng nếu bạn trích dẫn đường dẫn tuyệt đối (để chứa khoảng trắng và các ký tự đặc biệt khác), bạn cần thoát khỏi dấu ngoặc kép.

Để loại bỏ một hình ảnh iso, hãy nhớ trích dẫn nó:

PowerShell "Get-Volume G | Get-DiskImage | Dismount-DiskImage"

Lưu ý rằng chúng tôi không phải trích dẫn lệnh trong trường hợp đầu tiên, nhưng chúng tôi thực hiện trong lần thứ hai, vì |đường ống sẽ khiến dòng lệnh nghĩ rằng nó nằm trong ngữ cảnh dòng lệnh, thay vì thêm các đối số PowerShell(mà PowerShell tự động nối vào một lệnh duy nhất).

Cũng đảm bảo đánh vần Dismount-DiskImagechính xác (không có ktrong Dismount).


Công tắc -Command làm gì và tại sao chạy không tương tác?
Tanner Faulkner

1
Rất tiếc, không cần -Command, nó dường như tự động làm điều đó, không tương tác vì rất có thể, một kịch bản đang làm điều đó chứ không phải là một con người (người chỉ có thể sử dụng GUI)
ronalchn

Đừng quên việc tháo gỡ đơn giản bằng tên tệp:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan

Đối với các giá trị gắn kết hiện tại:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.