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.