Bir ISO'yu PowerShell / programatik olarak nasıl bağlayabilirim?


Yanıtlar:


46

Komut isteminden bir ISO ekleyin (yalnızca Windows 8/2012 ve üzeri)

Komut isteminde oturuyorsanız ve bir ISO bağlamanız gerekiyorsa, aşağıdaki komutu çalıştırın:

PowerShell Mount-DiskImage

Bu bir PowerShell cmdlet'ini çağırır. Monte etmek istediğiniz ISO'ların yolunu girmeniz istenir. İşiniz bittiğinde, sonuncuyu boş bırakın ve itin Enter.

Mount-DiskImage cmdlet'ini çalıştıran

Tada! Monte edilmiştir:

Tada!  Takılı - “Çıkarılabilir Depolamaya Sahip Cihazlar”

ISO’yu kaldırma

Bir ISO'yu PowerShell'den çıkarmak için çalıştırın Dismount-DiskImageve istemi izleyin. Görüntü yolunu değil, yalnızca kafanızın üstündeki sürücü harfini biliyorsanız, bu komutu kullanın:

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

Bu komut belirttiğiniz sürücüyü alır, disk görüntüsünü bulur ve çıkarır.

ISO'yu çıkardıktan sonra “Çıkarılabilir Depolama Aygıtı”

Birden fazla ISO takma ve sürücü harflerini görüntüleme

Ayrıca -PassThru, komuta iletilen verileri saklamak için bayrağı da kullanabilirsiniz . Birkaç ISO monte edelim, sürücü harflerini gösterelim, sürücülerden birinde bir dosya çalıştıralım ve sonra tüm ISO'ları kaldıralım.

ISO'ları monte et

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

Bir foreachdöngü kullanılarak monte edilen her ISO için ses bilgisi gösterimi

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

J sürücü listesi

 ls J:\

Bir dosya aç

 start wubi.exe

foreach / Get-Volume ve ls çıktısı

ISO'ları çıkarmak için aşağıdaki komutu kullanın:

 Dismount-DiskImage $MountedISOs.ImagePath

ISO’yu test etmek

ISO'nun eklenip eklenmediğini kontrol eden ve aslında bir ISO (VHD) olup olmadığını kontrol eden basit bir komut dosyası oluşturmak için -PassThru, nesneyi geçici olarak depolamak için kullanmayı Get-DiskImageve DiskImage nesnesinin durumunu güncellemek için komutu kullanmayı seviyorum . Bu Attachedözellik güncellenecektir . StorageTypeMülkiyet dosyası, dosya uzantısı göre ISO veya VHD bir olup olmadığını söyleyecektir.

<code> -PassThru </code> ve <code> Get-DiskImage </code> tuşlarını kullanarak

StorageTypeISO İşte 1. dönecektir bir VHD olan 2'deki çıkış var $UbuntuISO:
İşte <code> $ UbuntuISO </code> çıktısı

Bu $tempbir VHD taktıktan sonra çıktısıdır : ( Mount-DiskImageVHD'leri de monte edebilir!)
Bir VHD taktıktan sonra <code> $ temp </code> çıktısı

AttachedYukarıdaki özelliğin bir komut olmadan sorunsuz çalışmasına Falserağmen olduğunu unutmayın Mount-DiskImage.

Unutmayın $UbuntuISOdeğişken ya güncel kalmak olmaz:
<code> $ UbuntuISO </code> değişkeni güncel kalmaz


Teknik: Mount-DiskImage

Tekniği: Dismount-DiskImage


6
Kahretsin, PowerShell'deki tüm bu yeni cmdlet'lerle Windows 8 gıdıklıyor.
sinni800

1
Görüntüyü komutla kolayca bağlayabiliriz C:\>explorer.exe imagepath, burada PS'ye ihtiyacımız yok, ancak bu işlemi kaldırmak için PS'ye ihtiyacımız var.
avirk

3
Hepsi Windows 8'in içinde mi? Yani diğer programları kurmanıza gerek yok mu ???
Searush

2
+1 Gerçekten çok güzel! Bu oldu doğrusu ben sonunda benim cevap sonuna ekleyin böylece Win8 bulmak umduğu burada , fakat bana zahmetten kurtardı. Gerçekten PS becerilerimi geliştirmeye başlamam gerekiyor. :) Düzenleme: İç kısımları test etmek ve dosyanın bir ISO veya VHD veya tamamen desteklenmeyen bir şey olup olmadığını bildirmek için herhangi bir cmdlet var mı? Ya da belki Mount-DiskImage'ın dönüş değerini test etmenin bir yolu, belki de kod buna göre dallanmış olabilir.
Karan

1
@Karan Sonunda şunu anlamaya başladı: D Bağırsakları test etmeyecek ve açıkçası bunun fazla pişmiş olduğunu düşünüyorum. Ancak PowerShell hata işlemeye dalmadan monte edilmiş ve ISO vs VHD olup olmadığını bize bildirecektir.
Tanner Faulkner,

3

Normalde, bunu komut satırı üzerinden yapmak istiyorsanız, etkileşimli olmayan bir yönteme ihtiyacınız vardır. Bunu -ImagePathyapmak için anahtarı kullanmak isteyeceksiniz .

Böylece, komut:

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

Mutlak yolu belirtirseniz (boşluklar ve diğer özel karakterler için), tırnaklardan kaçmanız gerektiğini unutmayın.

Bir iso görüntüsünü kaldırmak için alıntı yapmayı unutmayın:

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

İlk durumda komutu alıntı yapmak zorunda olmadığımızı unutmayın, ancak ikincisinde yaparız, çünkü |boru komut satırının komut satırı bağlamında olduğunu düşünmesine neden olacaktır, bunun yerine argümanları eklemek PowerShell(otomatik olarak PowerShell) tek bir komutta birleştirir).

Ayrıca, Dismount-DiskImagedoğru kyazdığınızdan emin olun ( Dismount'ta hayır ).


-Command anahtarı ne işe yarıyor ve neden etkileşimli çalışmıyor?
Tanner Faulkner,

1
oops, -Command'a gerek yoktu, bunu otomatik olarak yapıyor, etkileşimli değil gibi görünüyor, çünkü olasılıklar, bir komut dosyası bir insan yerine (sadece GUI'yi kullananlar) yapıyor
ronalchn

Dosya adı ile daha basit bir şekilde çıkarmayı da unutma:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan

Güncel PowerShell Mount-DiskImage \"%CD%\Image.iso\"
direkler için
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.