Ceci est un Script qui a été fait par mon collègue qui permet de créer des packages ZIP
<# .Synopsis Generate MUI Lang.zip from LanguagePack / FeatureOnDemand and LangOffice folders .DESCRIPTION This script Build zip. file containing appropriate MUI source for the master. .NOTES Name : Build-MUIForMaster Author : Steven DURU Version : 1.0 DateCreated: 2019-11-26 DateUpdated: .CHANGES 1.0 - 2019-11-26 - Creation script #> ######################################################################### # Variables declaration # ######################################################################### # Return the directory of source files If ($psISE) { $CurrentDir = Split-Path -Parent -Path $psISE.CurrentFile.FullPath } Else { if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript") { $CurrentDir = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition } else { $CurrentDir = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0]) } } $BuildPath = "$CurrentDir\Build" ######################################################################### # Script # ######################################################################### # Extract Content ISO and remove read only attributes. Get-ChildItem $CurrentDir -recurse | Where-Object { $_.Extension -Match "ISO" } | ForEach-Object { $Folder = "$($_.DirectoryName)\$($_.BaseName)" Try { Mount-DiskImage -ImagePath $($_.FullName) -PassThru | Out-Null $volume = Get-DiskImage -ImagePath $($_.FullName) | Get-Volume $source = $volume.DriveLetter + ":\*" $folder = mkdir $folder Write-Host "Extracting: $($_.Name) to '$Folder'..." copy-Item -Path $source -Destination $folder -Recurse -PassThru | Set-ItemProperty -Name IsReadOnly -Value $False -ErrorAction SilentlyContinue Write-Host "Exctraction completed !!" #Unmount the ISO Try { Write-Host "Unmounting the ISO..." Dismount-DiskImage -ImagePath $($_.FullName) } Catch { $_.Exception.Message } } Catch { $_.Exception.Message } } $csvData = @' Arabic (saudi Arabia),ar-sa,ARAB Bulgarian (Bulgaria),bg-bg Chinese (PRC),zh-cn,HANS Chinese (Hong Kong SAR),zh-tw,HANT Croatian (Croatia),Hr-hr Czech (Czech Republic),cs-cz Danish (Denmark),da-dk Dutch (Netherlands),nl-nl Estonian (Estonia),et-ee English (United Kingdom),en-gb, Finnish (Finland),fi-fi French (Canada),fr-ca, French (France),fr-fr German (Germany),de-de Greek (Greece),el-gr Hebrew (Israel),he-il, Hungarian (Hungary),hu-hu Italian (Italy),it-it Japanese (Japan),ja-jp,Jpan Korean (Korea),ko-kr,Kore Latvian (Latvia),lv-lv Lithuanian (Lithuania),lt-lt Norwegian (Norway),nb-no Polish (Poland),pl-pl Portuguese (Brazil),pt-br Portuguese (Portugal),pt-pt Romanian (Romania),ro-ro Russian (Russia),ru-ru Serbian (Latin Serbia),sr-Latn-rs Slovak (Slovakia),sk-sk Slovenian (Slovenia),sl-si Spanish (Mexico),es-mx Spanish (Spain),es-es Swedish (Sweden),sv-se Thai (Thailand),th-th,Thai Turkish (Turkey),tr-tr Ukrainian (Ukraine),uk-ua '@ | ConvertFrom-Csv -Delimiter "," -Header Language/region,CodeLang,FontsCode,LanguagePack,OfficeLang,Basic,Fonts,Handwriting,OCR,Speech,TextToSpeech $ArrayHeader = @("Basic","Fonts","Handwriting","OCR","Speech","TextToSpeech") Get-ChildItem "$CurrentDir\FeatureOnDemand" -recurse | Where-Object {$_.Extension -eq ".cab" -and $_.Name -match "Microsoft-Windows-LanguageFeatures" } | ForEach-Object { $FODName = $($_.Name) $FODFullPath = $($_.FullName) $csvData | ForEach-Object { # Check FeatureOnDemand match XX-XX If ( $FODName -match $($_.CodeLang) ) { If (!(Test-Path -Path "$BuildPath\$($_.CodeLang)\FeaturePack\$($_.CodeLang)" )) { New-Item -Path "$BuildPath\$($_.CodeLang)\FeaturePack\" -ItemType "Directory" -Name "$($_.CodeLang)" -Verbose | Out-Null } # Copy FOD.cab in Build\xx-xx\FeaturePack\xx-xx Copy-Item -Path $FODFullPath -Destination "$BuildPath\$($_.CodeLang)\FeaturePack\$($_.CodeLang)" -Force # Add empty ini file. New-Item -Path "$BuildPath\$($_.CodeLang)" -ItemType "File" -Name "$($_.CodeLang).ini" -Force -Verbose | Out-Null For ($i=0; $i -lt $ArrayHeader.Length; $i++) { If ( $FODName -Match $_.CodeLang -and $FODName -match $($ArrayHeader[$i]) ) { $_.$($ArrayHeader[$i]) = "True" } } } # Check FeatureOnDemand match Thain ( for Fonts ) If ( $($_.FontsCode) -and ($FODName -match $($_.FontsCode)) ) { # Copy FeatureOnDemande match XX-XX If (!(Test-Path -Path "$BuildPath\$($_.CodeLang)\FeaturePack\$($_.CodeLang)" )) { New-Item -Path "$BuildPath\$($_.CodeLang)\FeaturePack\" -ItemType "Directory" -Name "$($_.CodeLang)" -Verbose | Out-Null } Copy-Item -Path $FODFullPath -Destination "$BuildPath\$($_.CodeLang)\FeaturePack\$($_.CodeLang)" -Force For ($i=0; $i -lt $ArrayHeader.Length; $i++) { If ( $FODName -Match $_.FontsCode -and $FODName -Match $($ArrayHeader[$i]) ) { $_.$($ArrayHeader[$i]) = "True" } } } } } # Extract LanguagePack Get-ChildItem "$CurrentDir\LanguagePack" -recurse | Where-Object {$_.Extension -eq ".cab" -and $_.Name -match "Microsoft-Windows-Client-Language-Pack_x64" } | ForEach-Object { $LPName = $($_.Name) $LPFullPath = $($_.FullName) $csvData | ForEach-Object { # Check FeatureOnDemand match XX-XX If ( $LPName -match $($_.CodeLang) ) { If (!(Test-Path -Path "$BuildPath\$($_.CodeLang)\os\$($_.CodeLang)" )) { New-Item -Path "$BuildPath\$($_.CodeLang)\os\" -ItemType "Directory" -Name "$($_.CodeLang)" -Verbose | Out-Null } # Copy LP.cab in Build\xx-xx\os\xx-xx Copy-Item -Path $LPFullPath -Destination "$BuildPath\$($_.CodeLang)\os\$($_.CodeLang)" -Force $_.LanguagePack = "True" } } } # Create Office Structure Get-ChildItem "$CurrentDir\OfficeLang\" -Directory | ForEach-Object { $ParentFolder = $($_.Name) $ParentFullPath = $($_.FullName) $csvData | ForEach-Object { If ( $ParentFolder -match $($_.CodeLang) ) { Copy-Item $ParentFullPath -Destination "$BuildPath" -Recurse -Force $_.OfficeLang = "True" } } } # Rename and compress Each folder Get-ChildItem "$BuildPath" -Directory | ForEach-Object { $LangFolder = $($_.Name) $LangFullPath = $($_.FullName) $csvData | ForEach-Object { If ($LangFolder -match $($_.CodeLang)) { Compress-Archive -Path "$LangFullPath\*" -CompressionLevel Fastest -DestinationPath "$BuildPath\$($_."Language/region")_MUI_1909_X64.zip" } } } $csvData | FT $Datas = $csvData # Import CSVdata to Excel $Excel = New-Object -ComObject excel.application $Excel.visible = $True $Excel.DisplayAlerts = $false $workbook = $Excel.workbooks.add() $Sheet = $workbook.ActiveSheet $Sheet.cells.item(1,1) = “Language/region” $Sheet.cells.item(1,2) = “CodeLang” $Sheet.cells.item(1,3) = “FontsCode” $Sheet.cells.item(1,4) = “LanguagePack” $Sheet.cells.item(1,5) = “OfficeLang” $Sheet.cells.item(1,6) = “Basic” $Sheet.cells.item(1,7) = “Fonts” $Sheet.cells.item(1,8) = “Handwriting” $Sheet.cells.item(1,9) = “OCR” $Sheet.cells.item(1,10) = “Speech” $Sheet.cells.item(1,11) = “TextToSpeech” $Header = $Sheet.Range("a1","k1") $Header.Font.Size = '16' $i = 2 $Datas | ForEach-Object { $Sheet.cells.item($i,1) = $_.'Language/region' $Sheet.cells.item($i,2) = $_.CodeLang $Sheet.cells.item($i,3) = $_.FontsCode $Sheet.cells.item($i,4) = $_.LanguagePack $Sheet.cells.item($i,5) = $_.OfficeLang $Sheet.cells.item($i,6) = $_.Basic $Sheet.cells.item($i,7) = $_.Fonts $Sheet.cells.item($i,8) = $_.Handwriting $Sheet.cells.item($i,9) = $_.OCR $Sheet.cells.item($i,10) = $_.Speech $Sheet.cells.item($i,11) = $_.TextToSpeech $i++ } #end foreach process # make it a table $ListObject = $Excel.ActiveSheet.ListObjects.add(1,$Excel.ActiveSheet.UsedRange,0,1) $Excel.ActiveSheet.UsedRange.EntireColumn.AutoFit() $ListObject.Name = "TableData" $ListObject.TableStyle = "TableStyleMedium13" Read-Host 'Hit any key to close Excel' $workbook.saveas("$CurrentDir\Export.xls") $Excel.Quit()