Bagaimana saya bisa memasang ISO melalui PowerShell / secara terprogram?

28

Bagaimana saya bisa memasang dan menurunkan gambar ISO dari PowerShell di Windows 8 tanpa program pihak ke-3?

Ini pertanyaan ini asli revisi membuat saya bertanya-tanya apakah itu mungkin untuk me-mount ISO melalui PowerShell di Windows 8.

Tanner Faulkner
sumber

Jawaban:

46

Pasang ISO dari command prompt (hanya Windows 8/2012 dan lebih tinggi)

Jika Anda duduk di prompt perintah dan perlu memasang ISO, jalankan perintah berikut:

PowerShell Mount-DiskImage

Ini akan memanggil cmdlet PowerShell. Anda akan diminta untuk jalur ISO yang ingin Anda pasang. Setelah selesai, biarkan yang terakhir kosong dan tekan Enter.

menjalankan cmdlet Mount-DiskImage

Tada! Sudah terpasang:

Tada!  Sudah terpasang - "Perangkat dengan Penyimpanan yang Dapat Dilepas"

Turun dari ISO

Untuk turun dari ISO dari PowerShell jalankan Dismount-DiskImagedan ikuti perintahnya. Jika Anda hanya tahu huruf drive dari atas kepala Anda, dan bukan jalur gambar, gunakan perintah ini:

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

Perintah ini akan mengambil drive yang Anda tentukan, menemukan gambar disk, dan menurunkannya.

“Perangkat dengan Penyimpanan yang Dapat Dilepas” setelah turun dari ISO

Memasang beberapa ISO dan menampilkan huruf drive

Anda juga dapat menggunakan -PassThrubendera untuk menyimpan data yang diteruskan ke perintah. Mari kita pasang beberapa ISO, tampilkan huruf drive mereka, jalankan file pada salah satu drive, dan kemudian turunkan semua ISO.

Pasang ISO

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

Tampilkan info volume untuk setiap ISO yang dipasang menggunakan foreachloop

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

Daftar drive J

 ls J:\

Buka file

 start wubi.exe

output foreach / Get-Volume dan ls

Untuk turun dari ISO, gunakan perintah berikut:

 Dismount-DiskImage $MountedISOs.ImagePath

Menguji ISO

Untuk membangun skrip sederhana yang memeriksa apakah ISO terpasang dan sebenarnya merupakan ISO (vs VHD) yang saya suka gunakan -PassThruuntuk menyimpan objek sementara, dan gunakan Get-DiskImageperintah untuk memperbarui status objek DiskImage. Ini akan memperbarui Attachedproperti. The StorageTypeproperti akan memberitahu Anda apakah file tersebut adalah ISO atau VHD sesuai dengan ekstensi file-nya.

menggunakan <code> -PassThru </code> dan <code> Get-DiskImage </code>

The StorageTypedari VHD adalah 2, di mana ISO akan kembali 1. Berikut output dari $UbuntuISO:
Inilah output dari <code> $ UbuntuISO </code>

Ini adalah output $tempsetelah memasang VHD: ( Mount-DiskImagejuga dapat me-mount VHD!)
output dari <code> $ temp </code> setelah memasang VHD

Perhatikan bahwa Attachedproperti di atas adalah False, meskipun Mount-DiskImageperintah berjalan tanpa hambatan.

Perlu diingat bahwa $UbuntuISOvariabel tidak akan tetap diperbarui:
variabel <code> $ UbuntuISO </code> tidak tetap diperbarui


Technet: Mount-DiskImage

Technet: Turun dari-DiskImage

Tanner Faulkner
sumber
6
Sial, dengan semua cmdlet baru di PowerShell Windows 8 mulai menggelitik.
sinni800
1
Kita dapat dengan mudah me-mount gambar melalui perintah C:\>explorer.exe imagepath, di sini kita tidak perlu PS tetapi untuk unmount di sana kita membutuhkan PS.
avirk
3
Apakah semua di dalam Windows 8? Maksud saya, Anda tidak perlu menginstal program lain ???
Searush
2
+1 Sangat bagus! Ini persis apa yang saya harapkan untuk ditemukan di Win8 sehingga saya akhirnya bisa menambahkannya ke akhir jawaban saya di sini , tetapi Anda menyelamatkan saya masalahnya. Saya benar-benar harus mulai meningkatkan keterampilan PS saya. :) Sunting: Apakah ada cmdlet untuk menguji jeroan dan melaporkan apakah file tersebut adalah ISO atau VHD atau sesuatu yang sama sekali tidak didukung? Atau mungkin cara untuk menguji nilai kembalinya dari Mount-DiskImage sehingga kode dapat bercabang sesuai?
Karan
1
@Karan Akhirnya mencari tahu = D Ini tidak akan menguji nyali, dan terus terang saya pikir itu berlebihan. Tapi itu akan memberi tahu kami jika sudah terpasang dan ISO vs VHD tanpa masuk ke penanganan kesalahan PowerShell.
Tanner Faulkner
3

Biasanya, jika Anda ingin melakukan ini melalui baris perintah, Anda memerlukan metode non-interaktif. Anda akan ingin menggunakan -ImagePathsakelar untuk melakukan ini.

Jadi, perintahnya adalah:

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

Ingatlah bahwa jika Anda mengutip jalur absolut (untuk berisi spasi dan karakter khusus lainnya), Anda harus lolos dari kutipan.

Untuk menurunkan gambar iso, ingatlah untuk mengutipnya:

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

Perhatikan bahwa kita tidak perlu mengutip perintah dalam kasus pertama, tetapi kita lakukan dalam yang kedua, karena |pipa akan menyebabkan baris perintah berpikir bahwa itu dalam konteks baris perintah, daripada argumen penambahan ke PowerShell(yang PowerShell secara otomatis menyatukan menjadi satu perintah).

Pastikan juga untuk mengeja Dismount-DiskImagedengan benar (tidak ada kdi Turun).

ronalchn
sumber
Apa yang dilakukan perintah -Command lakukan, dan mengapa dijalankan non-interaktif?
Tanner Faulkner
1
oops, tidak perlu -Command, tampaknya melakukan itu secara otomatis, non-interaktif karena kemungkinan, skrip melakukannya daripada manusia (yang hanya dapat menggunakan GUI)
ronalchn
Jangan lupa turun sederhana dengan nama file:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan
Untuk pemasangan dir saat ini:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan