1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| # https://support.microsoft.com/en-us/help/938205/windows-update-error-code-list
# récupére tous les fichier dans $files
$files = Get-ChildItem -Path ".\*.msu" -File
# Calcul la taille total de tous les fichier
[long]$total = ($files | Measure-Object -Sum Length).Sum
# Initialise le compteur
[long]$count = 0
# Pour chaque fichier dans $files
foreach($file in $files)
{
# Calcul le pourcentage en cours (arrondi à 2 chiffres après la virgule)
$percent = [math]::Round($count * 100 / $total, 2)
# Incrémente le compteur
$count += $file.Length
# Affiche la progression
Write-Progress -Activity "En cours : $($file.Name)" -PercentComplete $percent -CurrentOperation "$percent% complete" -Status "Please wait."
# Affiche le nom du fichier en cours
Write-Host -NoNewline $file.Name
# Lance l'installation
wusa $file.FullName /quiet /norestart | Out-Null
# Si cette suite contient le code retour
if (@(0, 0x00240005, 0x00240006) -contains $LASTEXITCODE)
{
Write-Host "`tRéussite" -ForegroundColor Green
}
# Sinon si 0x80240017 est égal au code retour
ElseIf (0x80240017 -eq $LASTEXITCODE)
{
Write-Host "`tLa mise à jour ne s'applique pas à votre ordinateur" -ForegroundColor Magenta
}
# Sinon
Else
{
# Converti en Hexa pour une meilleur lisibilité
$Hex = "0x" + "{0:x}" -f $LASTEXITCODE
Write-Host "`tEchec ($Hex)" -ForegroundColor Red
}
}
# Ferme la barre de progression
Write-Progress -Completed -Activity "Fin"
# Pause
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") |
Partager