Jak mogę zamontować ISO za pomocą PowerShell / programowo?

Odpowiedzi:

46

Zamontuj ISO z wiersza polecenia (tylko Windows 8/2012 i wyżej)

Jeśli siedzisz w wierszu polecenia i chcesz zamontować ISO, uruchom następujące polecenie:

PowerShell Mount-DiskImage

Spowoduje to wywołanie polecenia cmdlet programu PowerShell. Zostaniesz poproszony o podanie ścieżki ISO, którą chcesz zamontować. Kiedy skończysz, zostaw ostatni pusty i wciśnij Enter.

uruchamianie polecenia cmdlet Mount-DiskImage

Tada! Jest zamontowany:

Tada!  Jest zamontowany - „Urządzenia z wymienną pamięcią”

Zdemontować ISO

Aby odinstalować ISO z PowerShell, uruchom Dismount-DiskImagei postępuj zgodnie z instrukcjami. Jeśli znasz tylko literę dysku u góry głowy, a nie ścieżkę obrazu, użyj tego polecenia:

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

To polecenie pobierze określony dysk, znajdzie obraz dysku i odinstaluje go.

„Urządzenia z wymienną pamięcią” po zdemontowaniu ISO

Montowanie wielu ISO i wyświetlanie liter dysków

Możesz także użyć -PassThruflagi do przechowywania danych przekazanych do polecenia. Zamontujmy kilka ISO, wyświetlmy litery dysków, wykonaj plik na jednym z dysków, a następnie odinstaluj wszystkie ISO.

Zamontuj ISO

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

Wyświetl informacje o głośności dla każdego ISO zamontowanego za pomocą foreachpętli

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

Dysk z listą J.

 ls J:\

Otworzyć plik

 start wubi.exe

wyjście foreach / Get-Volume i ls

Aby zdemontować ISO, użyj następującego polecenia:

 Dismount-DiskImage $MountedISOs.ImagePath

Testowanie ISO

Aby zbudować prosty skrypt, który sprawdza, czy ISO jest dołączony i faktycznie jest ISO (w porównaniu z VHD), którego chcę używać -PassThrudo tymczasowego przechowywania obiektu, i użyj Get-DiskImagepolecenia, aby zaktualizować status obiektu DiskImage. Spowoduje to zaktualizowanie Attachedwłaściwości. StorageTypeNieruchomość powie, czy plik jest ISO lub VHD w zależności od jego rozszerzenia.

używając <code> -PassThru </code> i <code> Get-DiskImage </code>

StorageTypeZ VHD wynosi 2, gdzie ISO powróci 1. Oto wyjście $UbuntuISO:
Oto wynik działania <code> $ UbuntuISO </code>

To jest wyjście $temppo Mount-DiskImagezamontowaniu dysku VHD: ( można również zamontować dyski VHD!)
wyjście <code> $ temp </code> po zamontowaniu dysku VHD

Należy zauważyć, że Attachedpowyższa właściwość jest Falsepomimo Mount-DiskImagepolecenia uruchomionego bez żadnych problemów.

Pamiętaj, że $UbuntuISOzmienna również nie będzie aktualizowana:
zmienna <code> $ UbuntuISO </code> nie jest aktualizowana


Technet: Mount-DiskImage

Technet: Dismount-DiskImage

Tanner Faulkner
źródło
6
Cholera, wszystkie te cmdlety w PowerShell Windows 8 zaczynają łaskotać.
sinni800,
1
Możemy łatwo zamontować obraz za pomocą polecenia C:\>explorer.exe imagepath, tutaj nie potrzebujemy PS, ale do odmontowania potrzebujemy PS.
avirk
3
Czy wszystko jest w systemie Windows 8? To znaczy, czy nie musisz instalować innych programów?
Searush,
2
+1 Bardzo fajnie! To było dokładnie to, co miałem nadzieję znaleźć w Win8, więc może w końcu dodać go do końca moją odpowiedź tutaj , ale uratował mi kłopotów. Naprawdę muszę zacząć ćwiczyć umiejętności PS. :) Edycja: Czy jest jakieś polecenie cmdlet do testowania wewnętrznych elementów i zgłaszania, czy plik jest ISO, VHD, czy coś zupełnie innego, co nie jest obsługiwane? A może sposób na sprawdzenie wartości zwracanej przez Mount-DiskImage, aby kod mógł zostać odpowiednio rozgałęziony?
Karan
1
@Karan W końcu udało się to rozgryźć = D To nie będzie testowanie odwagi i szczerze mówiąc, myślę, że to przesada. Ale da nam znać, czy jest zamontowany, a ISO vs VHD bez zanurzania się w obsługę błędów PowerShell.
Tanner Faulkner,
3

Zwykle, jeśli chcesz to zrobić za pomocą wiersza polecenia, potrzebujesz nieinteraktywnej metody. W tym celu będziesz chciał użyć -ImagePathprzełącznika.

Zatem polecenie to:

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

Pamiętaj, że jeśli podajesz ścieżkę bezwzględną (zawierającą spacje i inne znaki specjalne), musisz uciec od cudzysłowów.

Aby zdemontować obraz ISO, pamiętaj o zacytowaniu go:

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

Zauważ, że nie musieliśmy cytować polecenia w pierwszym przypadku, ale robimy to w drugim, ponieważ |potok sprawi, że wiersz polecenia będzie myślał, że jest w kontekście wiersza polecenia, zamiast dodawać argumenty PowerShell( do których PowerShell automatycznie łączy się w jedno polecenie).

Upewnij się także, czy Dismount-DiskImagepoprawnie przeliterowałeś (nie kw Dismount).

ronalchn
źródło
Do czego służy przełącznik -Command i dlaczego działa w trybie nieinteraktywnym?
Tanner Faulkner,
1
Ups, nie potrzebowałem -Polecenia, wydaje się, że robi to automatycznie, nieinteraktywnie, ponieważ są szanse, skrypt robi to raczej niż człowiek (który może po prostu korzystać z GUI)
ronalchn
Nie zapomnij również o prostszym demontażu według nazwy pliku:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan
Dla aktualnych montowań dir:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan