Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

Comment avoir une Image Fractionnée comme Image de Référence pour de l'OSD

Publié le par damcuvelier

# Très utile pour faire du BOOT USB OFFLINE windows 10 avec une Image de Référence de plus de 4Go.
# Car les USB de boot sont souvent en FAT32 qui n'accèpte pas les fichiers de plus de 4Go


# 1. créer autant de "build and capture" (BNC) dont vous avez besoin d'install avec office

# 2. Placer votre script selon vos besoins dans le répertoire contenant toutes vos BNC

# 3. créer votre image "splitée" et mettez à jour votre Environment Deployment Tools (EDT), c'est à dire MDT, LanDesk, Configuration Manager (CM)...


# Etape 1: tout le monde sait faire une BNC, je ne vous ferai pas l'affront de vous apprendre à faire ce que vous êtes censé "savoir faire"

  ---------------------------------------------------------------------------------------------------

# C'est là que ça devient plus intéressant:

# Etape 2:
# Plusieurs blocks:
# 2.1.a Fusionner les Wim dans le bon ordre pour obtenir la Wim de Reference Multi (WRM):

$scriptpath = split-path -parent $MyInvocation.MyCommand.Path
$IMGRefOrigin = "$scriptpath\W1022h2_en-US.wim"
$WimsO365 = get-childitem -path $scriptpath | where-object{$_.Name -match "o365"}
foreach($WimO365 in $WimsO365){
    [string]$Wimfilename = $WimO365.Name
    $Wimname = ($Wimfilename).replace(".wim","")
    $Wimfullname = $WimO365.fullName
    $mountwim = "$scriptpath\$Wimname"

    cmd /c "md $mountwim"
    cmd /c "Dism /Mount-Image /ImageFile:$Wimfilename /Index:1 /MountDir:$mountwim"
    cmd /c "Dism /Append-Image /ImageFile:$IMGRefOrigin /CaptureDir:$mountwim /Name:$WimName"
    cmd /c "Dism /Unmount-Image /MountDir:$mountwim /discard"
    cmd /c "rmdir /S /q $mountwim"
}



# 2.1.b S'il y a de l'office autre: fusionner d'abord les plus anciennes versions.
# La boucle sera du genre:

$scriptpath = split-path -parent $MyInvocation.MyCommand.Path
$IMGRefOrigin = "$scriptpath\W1022h2_en-US.wim"
$IMGRefOName = $IMGRefOrigin.replace('.wim','')

$WimsO365 = get-childitem -path $scriptpath | where-object{$_.Name -match "o365"} # Pour office 365 (bref ça dépend du nom des wims correspondantes tel que définit lors de la BNC) vous l'aurez compris
function mergeWims($OfficeVersName){
$WimsOffice = get-childitem -path $scriptpath | where-object{$_.Name -match $OfficeVersName} # Où $OfficeVersName correspond au string distinctif de cette version office comme par exemple o2010
foreach($WimOffice in $WimsOffice){
    [string]$Wimfilename = $WimOffice.Name
    $Wimname = ($Wimfilename).replace(".wim","")
    $Wimfullname = $WimOffice.fullName
    $mountwim = "$scriptpath\$Wimname"

    cmd /c "md $mountwim"
    cmd /c "Dism /Mount-Image /ImageFile:$Wimfilename /Index:1 /MountDir:$mountwim"
    cmd /c "Dism /Append-Image /ImageFile:$IMGRefOrigin /CaptureDir:$mountwim /Name:$WimName"
    cmd /c "Dism /Unmount-Image /MountDir:$mountwim /discard"
    cmd /c "rmdir /S /q $mountwim"
}
}
mergeWims("o2010")
mergeWims("o2013")
mergeWims("o2016")
mergeWims("o365")

 

# Ne vous inquiétez pas de la taille de la WRM

# 2.2. Importer la WRM dans MDT

Import-MDTOperatingSystem -Path "DS001:\Operating Systems" -DestinationFolder $IMGRefOName –SourceFile $IMGRefOrigin

 

# 2.2. Importer la WRM dans CM
# CM fonctionne avec des chemins unc.
# Il faut donc partager le répertoire qui contient la WRM ($UNCIMGRefOrigin)

New-CMOperatingSystemImage -Name $IMGRefOName -Path $UNCIMGRefOrigin

# * tout les index seront présents selon les noms des Wim BNC définit dans la boucle au point (2.1) "$WimName"

  ---------------------------------------------------------------------------------------------------


# Etape 3:
# 3.1. Créer l'image fractionnée:

$SWMRefOrigin = $IMGRefOrigin.replace('.wim','swm')
cmd /c "Dism /Split-Image /ImageFile:$IMGRefOrigin /SWMFile:$SWMRefOrigin /FileSize:3800"

# 3.2. "Ajouter" l'image fractionnée à votre EDT
# 3.2.a Dans MDT:

$DS = < chemin vers votre répertoire MDT >
cmd /c "copy /Y $scriptpath\*.swm ""$DS\Operating Systems\$IMGRefOName"""
cmd /c "del /F /Q ""$DS\Operating Systems\$IMGRefOName\*.wim"""
get-content "$DS\operatingsystems.xml" | foreach{$_ -replace ".wim",".swm"} | set-content "$DS\operatingsystems.xml"

# 3.3. Block Powershell pour appliquer "manuellement" l'image fractionnée

$SwmFileName = $IMGRefOName
$index = 1
$MDTSrc=$DeployRoot
$OSSrc="$MDTSrc\Operating Systems"
dism.exe /apply-image /imagefile:"$OSSrc\$SwmFileName.wim" /swmfile:"$OSSrc\$SwmFileName.swm" /swmfile:"$OSSrc\$SwmFileName2.swm" /swmfile:"$OSSrc\$SwmFileName3.swm" /swmfile:"$OSSrc\$SwmFileName4.swm" /index:$index /applydir:$OSDisk\

 

  ---------------------------------------------------------------------------------------------------

# 4. Pour aller plus loin:

Dans CM, on peut créer un bootmedia constructeur qui s'appelle PrestagedMedia, qu'on fournit au constructeur. Ainsi, plus besoin de DP: le constructeur applique la TS sur les PC et les envoies directement à l'utilisateur. Puis, avec une convergence Intune, et accès constructeur à notre Azure AD: 

On se retrouve en ZeroTouch contrôlé sur un PC installé et configuré, avec le temps d'installation des applications obligatoire réduit à 0 côté utilisateurs & intune pour finaliser la configuration 

Commenter cet article