Page 1 sur 1

[PowerShell] Creer un fichier .Iso à partir d'un dossier d'installation

Posté : sam. 5 oct. 2024 21:23
par acideburn
S@lut à tous/tes

C'est un script Powershell qui reconstruit un fichier .ISO bootable depuis un Dvd ,dossier ou Iso d'installation windows que l'on aurait décompressé (avec 7zip ou autres..), ou simplement creer depuis un dossier.

Le code

Code : Tout sélectionner

[Console]::WindowWidth = 80
[Console]::WindowHeight = 20
$ver = "1.2"

Write-Host "====================== Création d'un ISO v $ver ======================="

# Vérification de la présence de oscdimg.exe
$oscdimgPath = Join-Path -Path $PSScriptRoot -ChildPath "oscdimg.exe"

if (-not (Test-Path $oscdimgPath)) {
    Write-Host "Erreur : La création de l'ISO ne peut pas s'exécuter sans le fichier oscdimg.exe." -ForegroundColor Red
    Write-Host "Veuillez vous assurer que oscdimg.exe est présent à l'emplacement : $oscdimgPath"
    Write-Host "Appuyez sur une touche pour quitter..." -ForegroundColor Green
    [System.Console]::ReadKey() | Out-Null
    exit 1
}

# Demander le chemin du dossier source
$sourcePath = Read-Host "Veuillez entrer ou glisser-déposer le chemin complet du dossier d'installation et appuyer sur Entrée"

# Vérifier si le chemin est valide
if (-not (Test-Path $sourcePath)) {
    Write-Host "Erreur : Le chemin du dossier source est invalide ou introuvable." -ForegroundColor Red
    exit 1
}

Write-Host "Appuyer sur la touche "Entrée" pour continuer"

# Variables
$outputIso = Join-Path -Path $PSScriptRoot -ChildPath "output.iso"  # Création de l'ISO dans le même répertoire que le script
$etfsboot = "$sourcePath\boot\etfsboot.com"
$efisys = "$sourcePath\efi\microsoft\boot\efisys.bin"

# Vérification des fichiers nécessaires
if (-not (Test-Path $etfsboot)) {
    Write-Host "Erreur : Le fichier de démarrage etfsboot.com est introuvable à l'emplacement : $etfsboot" -ForegroundColor Red
    exit 1
}

if (-not (Test-Path $efisys)) {
    Write-Host "Erreur : Le fichier de démarrage efisys.bin est introuvable à l'emplacement : $efisys" -ForegroundColor Red
    exit 1
}

# Commande à exécuter 
$command = "-m -o -u2 -udfver102 -bootdata:2#p0,e,b$etfsboot#pEF,e,b$efisys $sourcePath $outputIso"

# Démarrer le processus
Write-Host "Début de la création de l'ISO ..."

# Créer un processus pour exécuter oscdimg
$process = Start-Process -FilePath $oscdimgPath -ArgumentList $command -NoNewWindow -Wait -PassThru

# Vérifier le code de sortie
if ($process.ExitCode -eq 0) {
    Write-Host "Création de l'ISO terminée avec succès !"
    
    # Vérifier si le fichier ISO a été créé
    if (Test-Path $outputIso) {
        Write-Host "Chemin de l'ISO créé : $outputIso" -ForegroundColor Green
    } else {
        Write-Host "Erreur : Le fichier ISO n'a pas été trouvé à l'emplacement : $outputIso" -ForegroundColor Red
    }
} else {
    Write-Host "Échec de la création de l'ISO avec le code de sortie $($process.ExitCode)." -ForegroundColor Red
}

# Message de fermeture pour PowerShell standard
if (-not $psISE) {
    Write-Host "Appuyez sur une touche pour fermer..." -ForegroundColor Yellow
    [System.Console]::ReadKey() | Out-Null
}


Que fait le script :
  • Vérifie la présence du fichier "oscdimg.exe"
  • Demande ou se situe le dossier
  • Possibilité de glisser-déposer le dossier directement
  • Vérifie la présence des fichiers "etfsboot"et "efisys" nécessaire pour recreer un iso windows
  • Creer un fichier .Iso nommé "output.iso" dans le meme dossier que le script
  • Utilise la dernière version de oscdimg.exe (v.2.56)
Comment s'en servir ?
  1. Creer un fichier texte .txt peu importe le nom et enregistrer le code dedans en modifiant l'extension par .ps1 par exemple "creer_iso.ps1"
  2. Mettre le fichier "oscdimg.exe" dans le meme dossier que le script
  3. Clic droit sur l'icône du fichier et commande Exécuter avec PowerShell
  4. Appuyez sur n'importe quelle touche pour fermer le script
Release v1.2
  • Diminution du cadre du script pour ne pas prendre toute la place de l'écran
  • Ajout du numéro de version
  • Modification de la couleur de la destination du fichier outpout.iso de sortie

J'ai joint directement le script et le fichier oscdimg.exe (v 2.56) qui provient de l' ADK windows 10 et 11 de mai 2024
Iso_creer_v1.2.7z
(58.29 Kio) Téléchargé 49 fois

Re: [PowerShell] Creer un fichier .Iso à partir d'un dossier d'installation

Posté : dim. 6 oct. 2024 00:16
par ace_N_kelly
Comme les isos sont déjà bootable , à quoi sert le script ?

Re: [PowerShell] Creer un fichier .Iso à partir d'un dossier d'installation

Posté : dim. 6 oct. 2024 08:18
par acideburn
Les .isos ne sont pas forcément bootable si il n'y a pas le parametre udf pour la sortie.

Poweriso est un bon choix parmi les autres, de plus qu il intègre les outils Dism. Mais encore un peu lent sur ça. Le tout-en-un a parfois ces default.

De plus qu on gagne un peu en taille avec oscdimg.( la plupart des logiciels iso utilisent cela, mais la taille de sortie dépend de quelques paramètres, dont une amelioration du script pourra se faire encore pour gagner quelques centaines de Mo)

Le script sert apres avoir decompressé un iso windows et de travaillé sur les .wim etc...pour reconstruire un iso rapidement.

Surtout quand on travail en full -Offline qu 'avec des script sans autre outils, . 😊 (edit: j ai modifié le debut du post pour éclaircir un peu mieu ce qu est le script)

Et le fichier oscdimg.exe en prime qui pour le trouver faut installer l ' ADK windows etc...(un peu chia**) .
Il est necessaire aussi pour d autres taches. Donc il est ici now, ça peut servir :116:

Re: [PowerShell] Creer un fichier .Iso à partir d'un dossier d'installation

Posté : sam. 21 déc. 2024 12:23
par acideburn
Update v1.2

Re: [PowerShell] Creer un fichier .Iso à partir d'un dossier d'installation

Posté : sam. 21 déc. 2024 12:28
par pboulanger
Bonjour,

Merci pour le partage, c'est cool !

Où est la nouvelle version ? as-tu fait un annule et remplace dans le message initial ou ... ? (pense à expliquer ou la nouvelle version se trouve)

Dans le script à télécharger, si c'est le nouveau, il manque (par rapport au code publié) :

Code : Tout sélectionner

[Console]::WindowWidth = 80
[Console]::WindowHeight = 20
$ver = "1.2"

Bonne journée et de belles fêtes à venir ...

Re: [PowerShell] Creer un fichier .Iso à partir d'un dossier d'installation

Posté : mer. 25 déc. 2024 02:43
par acideburn
pboulanger a écrit : sam. 21 déc. 2024 12:28 Bonjour,

Merci pour le partage, c'est cool !

Où est la nouvelle version ? as-tu fait un annule et remplace dans le message initial ou ... ? (pense à expliquer ou la nouvelle version se trouve)

Dans le script à télécharger, si c'est le nouveau, il manque (par rapport au code publié) :

Code : Tout sélectionner

[Console]::WindowWidth = 80
[Console]::WindowHeight = 20
$ver = "1.2"

Bonne journée et de belles fêtes à venir ...
Merci pour le retour, en effet j'avais oublié de joindre la v1.2 au thread a jour :$*

Belles fetes de fins d'années a vous également