webentwicklung-frage-antwort-db.com.de

Wie kann ich eine ISO über PowerShell / programmgesteuert einbinden?

Wie kann ich in Windows 8 ISO-Images von PowerShell ohne Programme von Drittanbietern aktivieren und deaktivieren?

Diese Frage Original Revision hat mich gefragt, ob es möglich ist, eine ISO über zu mounten PowerShell unter Windows 8.

28
Tanner Faulkner

Mounten Sie ein ISO über die Eingabeaufforderung (nur Windows 8/2012 und höher)

Wenn Sie an einer Eingabeaufforderung sitzen und ein ISO bereitstellen müssen, führen Sie den folgenden Befehl aus:

PowerShell Mount-DiskImage

Dadurch wird ein PowerShell-Cmdlet aufgerufen. Sie werden aufgefordert, den Pfad der ISOs anzugeben, die Sie bereitstellen möchten. Wenn Sie fertig sind, lassen Sie das letzte Feld leer und drücken Sie Enter.

running Mount-DiskImage cmdlet

Tada! Es ist montiert:

Tada! It’s mounted — “Devices with Removable Storage”

ISO demontieren

Um die Bereitstellung eines ISO von PowerShell aufzuheben, führen Sie Dismount-DiskImage aus und befolgen Sie die Aufforderung. Wenn Sie nur den Laufwerksbuchstaben und nicht den Image-Pfad kennen, verwenden Sie diesen Befehl:

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

Mit diesem Befehl wird das angegebene Laufwerk abgerufen, das Festplatten-Image gesucht und die Bereitstellung aufgehoben.

“Devices with Removable Storage” after dismounting ISO

Mounten mehrerer ISOs und Anzeigen von Laufwerksbuchstaben

Sie können auch das Flag -PassThru verwenden, um an den Befehl übergebene Daten zu speichern. Stellen wir ein paar ISOs bereit, zeigen ihre Laufwerksbuchstaben an, führen eine Datei auf einem der Laufwerke aus und trennen dann die Bereitstellung aller ISOs.

Hängen Sie die ISOs ein

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

Volume-Informationen für jede über eine foreach-Schleife gemountete ISO anzeigen

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

Liste J Laufwerk

 ls J:\

Öffne einen Ordner

 start wubi.exe

output of foreach/Get-Volume and ls

Verwenden Sie den folgenden Befehl, um die Bereitstellung der ISOs aufzuheben:

 Dismount-DiskImage $MountedISOs.ImagePath

Testen der ISO

Um ein einfaches Skript zu erstellen, das überprüft, ob die ISO angehängt ist und tatsächlich eine ISO ist (im Gegensatz zu einer VHD), verwende ich gerne -PassThru, um das Objekt vorübergehend zu speichern, und aktualisiere den Status des DiskImage-Objekts mit dem Befehl Get-DiskImage. Dadurch wird die Eigenschaft Attached aktualisiert. Anhand der Eigenschaft StorageType können Sie erkennen, ob es sich bei der Datei um eine ISO- oder eine VHD-Datei handelt, je nach Dateierweiterung.

using <code>-PassThru</code> and <code>Get-DiskImage</code>

Der StorageType einer VHD ist 2, wobei eine ISO 1 zurückgibt. Hier ist die Ausgabe von $UbuntuISO:
Here's the output of <code>$UbuntuISO</code>

Dies ist die Ausgabe von $temp nach dem Mounten einer VHD: (Mount-DiskImage kann auch VHDs mounten!)
the output of <code>$temp</code> after mounting a VHD

Beachten Sie, dass die Attached -Eigenschaft oben False lautet, obwohl der Befehl Mount-DiskImage ohne Probleme ausgeführt wird.

Beachten Sie, dass die Variable $UbuntuISO auch nicht aktualisiert wird:
the <code>$UbuntuISO</code> variable does not stay updated


Technet: Mount-DiskImage

Technet: Dismount-DiskImage

46
Tanner Faulkner

Wenn Sie dies über die Befehlszeile tun möchten, benötigen Sie normalerweise eine nicht interaktive Methode. Verwenden Sie dazu den Schalter -ImagePath.

Der Befehl lautet also:

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

Denken Sie daran, dass Sie die Anführungszeichen umgehen müssen, wenn Sie den absoluten Pfad (für Leerzeichen und andere Sonderzeichen) in Anführungszeichen setzen.

Denken Sie daran, ein ISO-Image zu zitieren, wenn Sie es demontieren möchten:

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

Beachten Sie, dass wir den Befehl im ersten Fall nicht in Anführungszeichen setzen mussten, im zweiten Fall jedoch, da die Befehlszeile durch die | - Pipe den Eindruck erweckt, dass er sich im Befehlszeilenkontext befindet, anstatt Argumente zu PowerShell (which PowerShell wird automatisch zu einem einzigen Befehl verkettet.

Stellen Sie außerdem sicher, dass Dismount-DiskImage richtig geschrieben ist (keine k in Dismount).

3
ronalchn