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


Réponses:


46

Montez une image ISO à partir de l'invite de commandes (Windows 8/2012 et supérieur uniquement)

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

PowerShell Mount-DiskImage

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

exécution de l'applet de commande Mount-DiskImage

Tada! Il est monté:

Tada!  Il est monté - «Périphériques avec stockage amovible»

Démonter un ISO

Pour démonter une image ISO de PowerShell, exécutez Dismount-DiskImageet suivez l'invite. Si vous ne connaissez que la lettre de lecteur en haut de votre tête, et non le chemin de l'image, utilisez cette commande:

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

Cette commande saisira le lecteur que vous spécifiez, trouvera l'image disque et la démontera.

«Appareils avec stockage amovible» après le démontage de l'ISO

Montage de plusieurs ISO et affichage des lettres de lecteur

Vous pouvez également utiliser l' -PassThruindicateur 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 tous 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 ISO monté à l'aide d'une foreachboucle

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

Liste lecteur J

 ls J:\

Ouvrir un fichier

 start wubi.exe

sortie de foreach / Get-Volume et ls

Pour démonter les 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 rapport à un VHD) que j'aime utiliser -PassThrupour stocker temporairement l'objet et utiliser la Get-DiskImagecommande pour mettre à jour l'état de l'objet DiskImage. Cela mettra à jour la Attachedpropriété. La StorageTypepropriété vous indiquera si le fichier est un ISO ou un VHD selon son extension de fichier.

en utilisant <code> -PassThru </code> et <code> Get-DiskImage </code>

La valeur StorageTyped'un disque dur virtuel est 2, où un ISO retournera 1. Voici la sortie de $UbuntuISO:
Voici la sortie de <code> $ UbuntuISO </code>

Il s'agit de la sortie $tempaprès le montage d'un VHD: ( Mount-DiskImagepeut également monter des VHD!)
la sortie de <code> $ temp </code> après avoir monté un disque dur virtuel

Notez que la Attachedpropriété ci-dessus est False, malgré la Mount-DiskImagecommande exécutée sans accroc.

Gardez à l'esprit que la $UbuntuISOvariable ne restera pas non plus mise à jour:
la variable <code> $ UbuntuISO </code> ne reste pas à jour


Technet: Mount-DiskImage

Technet: Dismount-DiskImage


6
Merde, avec toutes ces nouvelles applets de commande dans PowerShell, Windows 8 commence à chatouiller.
sinni800

1
Nous pouvons facilement monter l'image via la commande C:\>explorer.exe imagepath, ici nous n'avons pas besoin de PS mais pour démonter là nous avons besoin du PS.
avirk

3
Tout est dans Windows 8? Je veux dire, n'avez-vous pas besoin d'installer d'autres programmes ???
Searush

2
+1 Très bien en effet! C'est précisément ce que j'espérais trouver dans Win8 afin que je puisse éventuellement l'ajouter à la fin de ma réponse ici , mais vous m'avez sauvé le problème. J'ai vraiment besoin de commencer à développer mes compétences PS. :) Edit: Existe-t-il une applet de commande pour tester les entrailles et signaler si le fichier est un ISO ou un VHD ou autre chose qui n'est pas pris en charge? Ou peut-être un moyen de tester la valeur de retour de Mount-DiskImage pour que le code puisse être ramifié en conséquence?
Karan

1
@Karan a finalement réussi à comprendre cela = D Cela ne va pas tester les tripes, et franchement, je pense que c'est exagéré. Mais il nous fera savoir s'il est monté et un ISO vs VHD sans plonger dans la gestion des erreurs PowerShell.
Tanner Faulkner

3

Normalement, si vous voulez le faire via la ligne de commande, vous avez besoin d'une méthode non interactive. Vous souhaiterez utiliser le -ImagePathcommutateur pour ce faire.

Ainsi, la commande est:

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 aux guillemets.

Pour démonter une image iso, n'oubliez pas de la citer:

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

Notez que nous n'avons pas eu à citer la commande dans le premier cas, mais nous le faisons dans le second, car le |canal fera croire à la ligne de commande qu'elle se trouve dans le contexte de la ligne de commande, plutôt que d'ajouter des arguments PowerShell(auxquels PowerShell automatiquement concatène en une seule commande).

Assurez-vous également d'épeler Dismount-DiskImagecorrectement (non kdans Démontage).


Que fait le commutateur -Command et pourquoi s'exécute de manière non interactive?
Tanner Faulkner

1
oups, n'a pas eu besoin de -Commande, il semble le faire automatiquement, non interactif parce que les chances sont, un script le fait plutôt qu'un humain (qui peut simplement utiliser l'interface graphique)
ronalchn

N'oubliez pas le démontage plus simple par nom de fichier:PowerShell Dismount-DiskImage \"C:\AbsolutePathTo\Image.iso\"
juanitogan

Pour les montages dir actuels:PowerShell Mount-DiskImage \"%CD%\Image.iso\"
juanitogan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.