web-dev-qa-db-fra.com

Comment puis-je monter une image ISO via PowerShell / par programme?

Comment monter et démonter des images ISO à partir de PowerShell dans Windows 8 sans programmes tiers?

La révision de cette question d'origine m'a posé la question s'il est possible de monter une image ISO via PowerShell dans Windows 8.

28
Tanner Faulkner

Monter une invite de commande ISO (Windows 8/2012 et versions ultérieures uniquement)

Si vous êtes assis à une invite de commande et que vous devez monter un fichier ISO, exécutez la commande suivante:

PowerShell Mount-DiskImage

Cela appellera une applet de commande PowerShell. Vous serez invité à indiquer le chemin des fichiers ISO que vous souhaitez monter. Lorsque vous avez terminé, laissez le dernier en blanc et appuyez sur Enter.

running Mount-DiskImage cmdlet

Tada! C'est monté:

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

Démonter une ISO

Pour démonter une image ISO de PowerShell, exécutez Dismount-DiskImage et suivez l’invite. Si vous ne connaissez que la lettre de lecteur et non le chemin de l'image, utilisez cette commande:

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

Cette commande va saisir le lecteur que vous spécifiez, rechercher l’image disque et la démonter.

“Devices with Removable Storage” after dismounting ISO

Montage de plusieurs ISO et affichage des lettres de lecteur

Vous pouvez également utiliser l'indicateur -PassThru pour stocker les données transmises à la commande. Montons quelques ISO, affichons leurs lettres de lecteur, exécutons un fichier sur l’un des lecteurs, puis démontons toutes les ISO.

Montez les ISO

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

Afficher les informations de volume pour chaque image ISO montée à l'aide d'une boucle foreachname__

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

Liste J en voiture

 ls J:\

Ouvrir un fichier

 start wubi.exe

output of foreach/Get-Volume and ls

Pour démonter les fichiers ISO, utilisez la commande suivante:

 Dismount-DiskImage $MountedISOs.ImagePath

Test de l'ISO

Pour créer un script simple qui vérifie si l'ISO est attaché et est en fait un ISO (par opposition à un disque dur virtuel), j'aime utiliser -PassThru pour stocker temporairement l'objet et utiliser la commande Get-DiskImage pour mettre à jour l'état de l'objet DiskImage. Cela mettra à jour la propriété Attachedname__. La propriété StorageTypevous indiquera si le fichier est un fichier ISO ou VHD en fonction de son extension.

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

Le StorageTyped'un disque dur virtuel est 2, où une image ISO retournera 1. Voici le résultat de $UbuntuISO:
Here's the output of <code>$UbuntuISO</code>

Ceci est la sortie de $temp après le montage d’un disque dur virtuel: (Mount-DiskImage peut également monter des disques durs virtuels!)
the output of <code>$temp</code> after mounting a VHD

Notez que la propriété Attachedci-dessus est Falsename__, malgré la commande Mount-DiskImage exécutée sans accroc.

N'oubliez pas que la variable $UbuntuISO ne restera pas à jour non plus:
the <code>$UbuntuISO</code> variable does not stay updated


Technet: Mount-DiskImage

Technet: Dismount-DiskImage

46
Tanner Faulkner

Normalement, si vous souhaitez effectuer cette opération via la ligne de commande, vous avez besoin d'une méthode non interactive. Vous voudrez utiliser le commutateur -ImagePath pour le faire.

Ainsi, la commande est la suivante:

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

N'oubliez pas que si vous citez le chemin absolu (pour contenir des espaces et d'autres caractères spéciaux), vous devez échapper les guillemets.

Pour démonter une image iso, rappelez-vous de la citer:

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

Notez que nous n’avions pas besoin de citer la commande dans le premier cas, mais dans le second, car le tube | fera en sorte que la ligne de commande pense qu’elle se trouve dans le contexte de la ligne de commande, plutôt que des arguments supplémentaires à PowerShell (qui PowerShell se concatène automatiquement en une seule commande).

Assurez-vous également d’épeler Dismount-DiskImage correctement (no k dans Dismount).

3
ronalchn