Monter et démonter un ISO en PowerShell

I. Présentation

Parce que je suis sur que cette astuce vous sera utile dans votre script, j'en ai décidé d'en faire un tutoriel sur le sujet. En effet, nous verrons dans cet article comment manipuler un fichier ISO en PowerShell, sur Windows 8 ou Windows Server 2012 au minimum, Windows 10 et Windows Server 2016 étant fully compatible avec ce que l'on va voir dans ce tutoriel.

Note : PowerShell 3.0 minimum requis

On verra comment monter un ISO, comment le démonter, mais aussi comment récupérer la lettre du lecteur associé à l'image ISO car ce sera indispensable si l'on veut récupérer du contenu au sein de l'ISO que l'on monte.

II. Monter un ISO en PowerShell

Un commandlet natif à PowerShell nommé "Mount-DiskImage" permet de monter sur Windows des fichiers ISO (mais aussi des VHD ou VHDX), c'est lui que nous allons utiliser pour monter le fichier.

Voici la commande telle que je l'utilise et que je vous conseille de l'utiliser :

Mount-DiskImage -ImagePath <Path-to-ISO-file> -StorageType ISO -PassThru

On précise tout simplement le "ImagePath" qui correspond au chemin vers le fichier ISO et le "StorageType" qui est facultatif mais qui permet d'apporter la précision, pour indiquer qu'il s'agit d'un ISO. Si vous exécutez cette commande, dans l'explorateur de fichiers il doit y avoir un nouveau lecteur correspondant à votre fichier ISO.

III. Récupérer la lettre d'un ISO monté en PowerShell

Nous allons voir maintenant une méthode pour récupérer la lettre du lecteur sur lequel est monté l'image ISO, ce qui sera utile si vous souhaitez récupérer des fichiers situés dans l'image ISO. Dans le principe, on va stocker la commande de montage dans une variable puis ensuite on va la jouer avec un pipeline pour renvoyer sur Get-Volume. Enfin, on va récupérer seulement la propriété "DriveLetter" qui permet d'obtenir la lettre associée au lecteur.

Dans la pratique, ceci donne les deux lignes suivantes :

$MountISO = Mount-DiskImage -ImagePath <Path-to-ISO-file> -StorageType ISO -PassThru
$LetterISO = ($MountISO | Get-Volume).DriveLetter

Si l'on joue la commande sans spécifier une propriété en particulier, on obtiendra le résultat complet de la commande "Get-Volume", et on peut voir qu'il y a bien une colonne DriveLetter :

DriveLetter FileSystemLabel          FileSystem DriveType HealthStatus OperationalStatus SizeRemaining      Size
----------- ---------------          ---------- --------- ------------ ----------------- -------------      ----
D           J_ARPI_A32FREO_EN-US_DV5 UDF        CD-ROM    Healthy      OK                          0 B 517.06 MB

Il suffira ensuite d'utiliser la variable $LetterISO qui contient uniquement la lettre pour pouvoir cibler l'ISO et récupérer des données. Il faudra penser à ajouter ":\" dans votre chemin après la lettre car là ce n'est pas inclus.

IV. Démonter un ISO en PowerShell

Pour finir, nous allons démonter un fichier ISO, c'est à dire qu'il n'apparaisse plus dans l'explorateur Windows, il suffira d'utiliser le commandlet "Dismount-DiskImage" sur le même principe que la syntaxe pour monter le fichier ISO. Voici un exemple :

Dismount-DiskImage -ImagePath <Path-to-ISO-file>

Il serait intéressant de définir une variable $ISO contenant le chemin vers l'ISO pour l'utiliser directement dans la commande Mount-DiskImage et Dismount-DiskImage, ainsi on simplifie la gestion du chemin et on est sûr de bien démonter ce que l'on a monté.

Finalement, si l'on veut résumer les commandes, voici quelques lignes pour monter un ISO, afficher sa lettre de lecteur et ensuite le démonter :

# Monter l'ISO
$ISO = "C:\Users\Florian\Desktop\monISO.iso"
$MountISO = Mount-DiskImage -ImagePath $ISO -StorageType ISO -PassThru

# Récupérer la lettre de montage de l'ISO
$LetterISO = ($MountISO | Get-Volume).DriveLetter

# Démonter l'ISO
Dismount-DiskImage -ImagePath $ISO
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5575.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.