Hello everyone,
I have a problem with my script and I don’t understand why.
It’s my first script so be indulgent
When I run my script from Windows 10, it’s OK, the output is good, but when I run the script from Windows Server 2016, the output got some stranges “letters”.
Here is the output from Windows 10 :
Début de l'analyse du système. Cette opération peut nécessiter un certain temps. Démarrage de la phase de vérification de l'analyse du système. La vérification est à 0% terminée. La vérification est à 1% terminée. La vérification est à 1% terminée. La vérification est à 2% terminée. La vérification est à 3% terminée. La vérification est à 3% terminée. La vérification est à 4% terminée. La vérification est à 4% terminée. La vérification est à 5% terminée. La vérification est à 6% terminée. La vérification est à 6% terminée. La vérification est à 7% terminée. La vérification est à 7% terminée. La vérification est à 8% terminée. La vérification est à 9% terminée. La vérification est à 9% terminée. La vérification est à 10% terminée. La vérification est à 10% terminée. La vérification est à 11% terminée. La vérification est à 12% terminée. La vérification est à 12% terminée. La vérification est à 13% terminée. La vérification est à 13% terminée. La vérification est à 14% terminée. La vérification est à 15% terminée. La vérification est à 15% terminée. La vérification est à 16% terminée. La vérification est à 16% terminée. La vérification est à 17% terminée. La vérification est à 18% terminée. La vérification est à 18% terminée. La vérification est à 19% terminée. La vérification est à 19% terminée. La vérification est à 20% terminée. La vérification est à 21% terminée. La vérification est à 21% terminée. La vérification est à 22% terminée. La vérification est à 22% terminée. La vérification est à 23% terminée. La vérification est à 24% terminée. La vérification est à 24% terminée. La vérification est à 25% terminée. La vérification est à 25% terminée. La vérification est à 26% terminée. La vérification est à 27% terminée. La vérification est à 27% terminée. La vérification est à 28% terminée. La vérification est à 28% terminée. La vérification est à 29% terminée. La vérification est à 30% terminée. La vérification est à 30% terminée. La vérification est à 31% terminée. La vérification est à 31% terminée. La vérification est à 32% terminée. La vérification est à 33% terminée. La vérification est à 33% terminée. La vérification est à 34% terminée. La vérification est à 34% terminée. La vérification est à 35% terminée. La vérification est à 36% terminée. La vérification est à 36% terminée. La vérification est à 37% terminée. La vérification est à 37% terminée. La vérification est à 38% terminée. La vérification est à 39% terminée. La vérification est à 39% terminée. La vérification est à 40% terminée. La vérification est à 40% terminée. La vérification est à 41% terminée. La vérification est à 42% terminée. La vérification est à 42% terminée. La vérification est à 43% terminée. La vérification est à 43% terminée. La vérification est à 44% terminée. La vérification est à 45% terminée. La vérification est à 45% terminée. La vérification est à 46% terminée. La vérification est à 46% terminée. La vérification est à 47% terminée. La vérification est à 48% terminée. La vérification est à 48% terminée. La vérification est à 49% terminée. La vérification est à 49% terminée. La vérification est à 50% terminée. La vérification est à 51% terminée. La vérification est à 51% terminée. La vérification est à 52% terminée. La vérification est à 52% terminée. La vérification est à 53% terminée. La vérification est à 54% terminée. La vérification est à 54% terminée. La vérification est à 55% terminée. La vérification est à 55% terminée. La vérification est à 56% terminée. La vérification est à 57% terminée. La vérification est à 57% terminée. La vérification est à 58% terminée. La vérification est à 59% terminée. La vérification est à 59% terminée. La vérification est à 60% terminée. La vérification est à 60% terminée. La vérification est à 61% terminée. La vérification est à 62% terminée. La vérification est à 62% terminée. La vérification est à 63% terminée. La vérification est à 63% terminée. La vérification est à 64% terminée. La vérification est à 65% terminée. La vérification est à 65% terminée. La vérification est à 66% terminée. La vérification est à 66% terminée. La vérification est à 67% terminée. La vérification est à 68% terminée. La vérification est à 68% terminée. La vérification est à 69% terminée. La vérification est à 69% terminée. La vérification est à 70% terminée. La vérification est à 71% terminée. La vérification est à 71% terminée. La vérification est à 72% terminée. La vérification est à 72% terminée. La vérification est à 73% terminée. La vérification est à 74% terminée. La vérification est à 74% terminée. La vérification est à 75% terminée. La vérification est à 75% terminée. La vérification est à 76% terminée. La vérification est à 77% terminée. La vérification est à 77% terminée. La vérification est à 78% terminée. La vérification est à 78% terminée. La vérification est à 79% terminée. La vérification est à 80% terminée. La vérification est à 80% terminée. La vérification est à 81% terminée. La vérification est à 81% terminée. La vérification est à 82% terminée. La vérification est à 83% terminée. La vérification est à 83% terminée. La vérification est à 84% terminée. La vérification est à 84% terminée. La vérification est à 85% terminée. La vérification est à 86% terminée. La vérification est à 86% terminée. La vérification est à 87% terminée. La vérification est à 87% terminée. La vérification est à 88% terminée. La vérification est à 89% terminée. La vérification est à 89% terminée. La vérification est à 90% terminée. La vérification est à 90% terminée. La vérification est à 91% terminée. La vérification est à 92% terminée. La vérification est à 92% terminée. La vérification est à 93% terminée. La vérification est à 93% terminée. La vérification est à 94% terminée. La vérification est à 95% terminée. La vérification est à 95% terminée. La vérification est à 96% terminée. La vérification est à 96% terminée. La vérification est à 97% terminée. La vérification est à 98% terminée. La vérification est à 98% terminée. La vérification est à 99% terminée. La vérification est à 99% terminée. La vérification est à 100% terminée. Le programme de protection des ressources Windows n'a trouvé aucune violation d'intégrité.
And from Windows Server 2016 :
Début de l'analyse du système. Cette opération peut nécessiter un certain temps. Démarrage de la phase de vérification de l'analyse du système. La vérification 0% est terminée.La vérification 0% est terminée.La vérification 1% est terminée.La vérification 1% est terminée.La vérification 2% est terminée.La vérification 2% est terminée.La vérification 2% est terminée.La vérification 3% est terminée.La vérification 3% est terminée.La vérification 4% est terminée.La vérification 4% est terminée.La vérification 4% est terminée.La vérification 5% est terminée.La vérification 5% est terminée.La vérification 6% est terminée.La vérification 6% est terminée.La vérification 6% est terminée.La vérification 7% est terminée.La vérification 7% est terminée.La vérification 8% est terminée.La vérification 8% est terminée.La vérification 8% est terminée.La vérification 9% est terminée.La vérification 9% est terminée.La vérification 10% est terminée.La vérification 10% est terminée.La vérification 11% est terminée.La vérification 11% est terminée.La vérification 11% est terminée.La vérification 12% est terminée.La vérification 12% est terminée.La vérification 13% est terminée.La vérification 13% est terminée.La vérification 13% est terminée.La vérification 14% est terminée.La vérification 14% est terminée.La vérification 15% est terminée.La vérification 15% est terminée.La vérification 15% est terminée.La vérification 16% est terminée.La vérification 16% est terminée.La vérification 17% est terminée.La vérification 17% est terminée.La vérification 17% est terminée.La vérification 18% est terminée.La vérification 18% est terminée.La vérification 19% est terminée.La vérification 19% est terminée.La vérification 20% est terminée.La vérification 20% est terminée.La vérification 20% est terminée.La vérification 21% est terminée.La vérification 21% est terminée.La vérification 22% est terminée.La vérification 22% est terminée.La vérification 22% est terminée.La vérification 23% est terminée.La vérification 23% est terminée.La vérification 24% est terminée.La vérification 24% est terminée.La vérification 24% est terminée.La vérification 25% est terminée.La vérification 25% est terminée.La vérification 26% est terminée.La vérification 26% est terminée.La vérification 26% est terminée.La vérification 27% est terminée.La vérification 27% est terminée.La vérification 28% est terminée.La vérification 28% est terminée.La vérification 28% est terminée.La vérification 29% est terminée.La vérification 29% est terminée.La vérification 30% est terminée.La vérification 30% est terminée.La vérification 31% est terminée.La vérification 31% est terminée.La vérification 31% est terminée.La vérification 32% est terminée.La vérification 32% est terminée.La vérification 33% est terminée.La vérification 33% est terminée.La vérification 33% est terminée.La vérification 34% est terminée.La vérification 34% est terminée.La vérification 35% est terminée.La vérification 35% est terminée.La vérification 35% est terminée.La vérification 36% est terminée.La vérification 36% est terminée.La vérification 37% est terminée.La vérification 37% est terminée.La vérification 37% est terminée.La vérification 38% est terminée.La vérification 38% est terminée.La vérification 39% est terminée.La vérification 39% est terminée.La vérification 40% est terminée.La vérification 40% est terminée.La vérification 40% est terminée.La vérification 41% est terminée.La vérification 41% est terminée.La vérification 42% est terminée.La vérification 42% est terminée.La vérification 42% est terminée.La vérification 43% est terminée.La vérification 43% est terminée.La vérification 44% est terminée.La vérification 44% est terminée.La vérification 44% est terminée.La vérification 45% est terminée.La vérification 45% est terminée.La vérification 46% est terminée.La vérification 46% est terminée.La vérification 46% est terminée.La vérification 47% est terminée.La vérification 47% est terminée.La vérification 48% est terminée.La vérification 48% est terminée.La vérification 49% est terminée.La vérification 49% est terminée.La vérification 49% est terminée.La vérification 50% est terminée.La vérification 50% est terminée.La vérification 51% est terminée.La vérification 51% est terminée.La vérification 51% est terminée.La vérification 52% est terminée.La vérification 52% est terminée.La vérification 53% est terminée.La vérification 53% est terminée.La vérification 53% est terminée.La vérification 54% est terminée.La vérification 54% est terminée.La vérification 55% est terminée.La vérification 55% est terminée.La vérification 55% est terminée.La vérification 56% est terminée.La vérification 56% est terminée.La vérification 57% est terminée.La vérification 57% est terminée.La vérification 57% est terminée.La vérification 58% est terminée.La vérification 58% est terminée.La vérification 59% est terminée.La vérification 59% est terminée.La vérification 60% est terminée.La vérification 60% est terminée.La vérification 60% est terminée.La vérification 61% est terminée.La vérification 61% est terminée.La vérification 62% est terminée.La vérification 62% est terminée.La vérification 62% est terminée.La vérification 63% est terminée.La vérification 63% est terminée.La vérification 64% est terminée.La vérification 64% est terminée.La vérification 64% est terminée.La vérification 65% est terminée.La vérification 65% est terminée.La vérification 66% est terminée.La vérification 66% est terminée.La vérification 66% est terminée.La vérification 67% est terminée.La vérification 67% est terminée.La vérification 68% est terminée.La vérification 68% est terminée.La vérification 69% est terminée.La vérification 69% est terminée.La vérification 69% est terminée.La vérification 70% est terminée.La vérification 70% est terminée.La vérification 71% est terminée.La vérification 71% est terminée.La vérification 71% est terminée.La vérification 72% est terminée.La vérification 72% est terminée.La vérification 73% est terminée.La vérification 73% est terminée.La vérification 73% est terminée.La vérification 74% est terminée.La vérification 74% est terminée.La vérification 75% est terminée.La vérification 75% est terminée.La vérification 75% est terminée.La vérification 76% est terminée.La vérification 76% est terminée.La vérification 77% est terminée.La vérification 77% est terminée.La vérification 78% est terminée.La vérification 78% est terminée.La vérification 78% est terminée.La vérification 79% est terminée.La vérification 79% est terminée.La vérification 80% est terminée.La vérification 80% est terminée.La vérification 80% est terminée.La vérification 81% est terminée.La vérification 81% est terminée.La vérification 82% est terminée.La vérification 82% est terminée.La vérification 82% est terminée.La vérification 83% est terminée.La vérification 83% est terminée.La vérification 84% est terminée.La vérification 84% est terminée.La vérification 84% est terminée.La vérification 85% est terminée.La vérification 85% est terminée.La vérification 86% est terminée.La vérification 86% est terminée.La vérification 86% est terminée.La vérification 87% est terminée.La vérification 87% est terminée.La vérification 88% est terminée.La vérification 88% est terminée.La vérification 89% est terminée.La vérification 89% est terminée.La vérification 89% est terminée.La vérification 90% est terminée.La vérification 90% est terminée.La vérification 91% est terminée.La vérification 91% est terminée.La vérification 91% est terminée.La vérification 92% est terminée.La vérification 92% est terminée.La vérification 93% est terminée.La vérification 93% est terminée.La vérification 93% est terminée.La vérification 94% est terminée.La vérification 94% est terminée.La vérification 95% est terminée.La vérification 95% est terminée.La vérification 95% est terminée.La vérification 96% est terminée.La vérification 96% est terminée.La vérification 97% est terminée.La vérification 97% est terminée.La vérification 98% est terminée.La vérification 98% est terminée.La vérification 98% est terminée.La vérification 99% est terminée.La vérification 99% est terminée.La vérification 100% est terminée. La protection des ressources Windows a trouvé des fichiers endommagés, mais n'a pas réussi à tous les réparer. Des détails sont inclus dans le journal CBS.Log windir\Logs\CBS\CBS.log. Par exemple C:\Windows\Logs\CBS\CBS.log. Notez que la journalisation n'est pas actuellement prise en charge dans les scénarios de service hors connexion
Here is the script :
########################################
####### Définition des variables #######
########################################
#Définition de la date
$date = Get-Date -Format “dd-MM-yyyy”
#Récupération du nom de l’ordinateur
$computername = $env:COMPUTERNAME
#Définition de l’emplacement des rapports
$report = “C:\Users$env:USERNAME\Desktop\Check_Disk_”+“$computername”+““+$date+”.html"
$reportScanHealth = "C:\Users$env:USERNAME\Desktop\ScanHealth”+“$computername”+““+$date+”.html"
$reportRestoreHealth = "C:\Users$env:USERNAME\Desktop\RestoreHealth”+“$computername”+““+$date+”.html"
$reportSFCScannow = "C:\Users$env:USERNAME\Desktop\SFCScannow”+“$computername”+“_”+$date+“.html”
#Récupération de la version de l’OS
$OSVersion = (Get-WMIObject win32_operatingsystem).name
#Définition du chemin de l’image Windows à utiliser en cas de réparation
$WindowsImage = “”
if ($OSVersion -like “Windows 10”) {
$WindowsImage = “\X.X.X.X\ISO_Windows\Windows 10\sources\install.esd:6”
}
elseif ($OSVersion -like “Windows Server 2016”) {
$WindowsImage = “\X.X.X.X\ISO_Windows\Windows Server 2016\sources\install.esd:4”
}
elseif ($OSVersion -like “*Windows Server 2012”) {
$WindowsImage = “”
}
elseif ($OSVersion -like “Windows Server 2008”) {
$WindowsImage = “”
}
Vérification de l’existence ou non du rapport.
if((test-path $report) -like $false) {
new-item $report -type file
}
#Code CSS du rapport
Add-content $report ‘<STYLE TYPE=“text/css”>’
Add-Content $report “.table1 {”
Add-Content $report “width: 100%; border: 2px solid black; background-color: #FFFFFF; }”
Add-Content $report “.table2 {”
Add-Content $report “width: 100%; border: 1px solid black; border-collapse: collapse; border-style: solid;}”
Add-Content $report “.tr1 {”
Add-Content $report “border: 2px solid #AAAAAA; border-style: solid; border-color:#006AE1 ;font-family: Georgia, sans-serif; background-color: #006AE1; color: #FFFFFF; text-align: center; font-size:15px; font-weight: bold; height: 30px; }”
Add-Content $report “.tr2 {”
Add-Content $report “border: 2px solid #AAAAAA; font-family: tahoma, sans-serif; color: #05A211; text-align: center; font-size:13px; font-weight: bold;}”
Add-Content $report “.tr3 {”
Add-Content $report “border: 2px solid #AAAAAA; font-family: tahoma, sans-serif; color: #FF7400; text-align: center; font-size:13px; font-weight: bold;}”
Add-Content $report “.tr4 {”
Add-Content $report “border: 2px solid #AAAAAA; font-family: tahoma, sans-serif; color: #FF0000; text-align: center; font-size:13px; font-weight: bold;}”
Add-content $report “</style>”
#Population du rapport
Add-Content $report “<html>”
Add-Content $report “<head>”
Add-Content $report “<meta http-equiv=‘Content-Type’ content=‘text/html; charset=iso-8859-1’>”
Add-Content $report ‘<title>Check Disk - Report</title>’
Add-Content $report “</head>”
Add-Content $report “<body>”
Add-content $report ‘’
Add-content $report “”
Add-content $report “”
Add-content $report “
” Add-content $report “<font face=‘tahoma’ color=‘#003399’ size=‘4’>Check Disk </br>Nom du poste : $computername </font>” Add-content $report “ |
Add-Content $report “</br>”
Add-content $report “”
Add-Content $report “”
Add-Content $report “”
Add-Content $report “”
Add-Content $report “”
Add-Content $report “”
Add-Content $report “”
#Variable du rapport et clear du rapport
#Clear-Content $report
Définition de l’encodage pour supprimer les espaces générés via la commande sfc /scannow (uniquement pour affichage dans la console PowerShell)
$prev = [console]::OutputEncoding
[console]::OutputEncoding = [Text.Encoding]::Unicode
#Lancement de la commande sfc /scannow et envoi du résultat dans le rapport
sfc /scannow | Out-File $reportSFCScannow -Encoding utf8
#Récupération du contenu du rapport
$content = Get-Content $reportSFCScannow
Remise de l’encodage d’origine
#[console]::OutputEncoding = $prev
if ($content | Select-String “n’a trouvé aucune violation d’intégrité”,“any integrity violations”) {
Add-Content $report “
Add-Content $report “”
Add-Content $report “”
Add-Content $report ‘’
Add-Content $report “”
Remove-Item $reportSFCScannow
}
elseif ($content | Select-String “des fichiers endommagés et a pu les réparer”,“found corrupt files and successfully”) {
Add-Content $report “
Add-Content $report “”
Add-Content $report “”
Add-Content $report “”
Add-Content $report “”
Remove-Item $reportSFCScannow
}
elseif ($content | Select-String “mais n’a pas réussi à tous les réparer”,“found corrupt files but was unable to fix”) {
Add-Content $report “
#Exécution de la commande Repair-WindowsImage -Online -ScanHealth"
Repair-WindowsImage -Online -ScanHealth | Out-File $reportScanHealth -Encoding utf8
$content_scan_health = Get-Content $reportScanHealth
Add-Content $report “”
Remove-Item $reportScanHealth
$content = Get-Content $report
if ($content | Select-String “ImageHealthState : Healthy”) {
Add-Content $report “
Add-Content $report “”
Add-Content $report “”
}
elseif ($content | Select-String “ImageHealthState : Repairable”) {
Add-Content $report “”
#Exécution de la commande Repair-WindowsImage -Online -RestoreHealth -Source install_path -LimitAccess"
Repair-WindowsImage -Online -RestoreHealth -Source $WindowsImage -LimitAccess | Out-File $reportRestoreHealth -Encoding utf8
$content_restore_health = Get-Content $reportRestoreHealth
if ($content_restore_health | Select-String “Healthy”) {
Add-Content $report “”
}
else { Add-Content $report “” }
if ($content_restore_health | Select-String “ImageHealthState : Healthy”) {
Add-Content $report “
Remove-Item $reportRestoreHealth
#Relancer sfc /scannow
}
else {
Add-Content $report “
Remove-Item $reportRestoreHealth
}
}
else {
Add-Content $report “”
Add-Content $report “”
Add-Content $report “” }
}
<#Définition des variables pour l’envoi du rapport par mail
$encodingMail = [System.Text.Encoding]::UTF8
$to = @(“name@xxx.com”)
$from = “CheckDisk@xxx.com”
$subject = "Check Disk : " + $computername + “_” + $date
$smtp = “smtp.xxx.com”
$body = Get-Content $report
Envoi du mail
Send-MailMessage -SmtpServer $smtp -From $from -To $to -Subject $subject -Body $body #>
Thanks to you
Résultat de la commande sfc /scannow | Résultat du scan de l’image Windows | Interprétation du résultat du scan | Résultat de la réparation de l’image Windows | Interprétation du résultat de la réparation | ||||||||||||||||||
Aucunes erreurs détectées | NA | NA | NA | NA | Les erreurs trouvées ont été corrigées | NA | NA | NA | NA | Des erreurs ont été trouvées.</br> Lancement du scan de l’image Windows… </br> ------> | $content_scan_health </br> ------> | L’image de réparation Windows est intègre <br />Redémarrer la machine et ré-essayer de lancer la commande sfc /scannow | NA | NA | L’image de réparation de Windows n’est pas intègre <br />Exécution de la réparation de l’'image</br> ------> | $content_restore_health </br> ------> | $content_restore_health </br> ------> | L’'image Windows a été réparée.<br />La commande sfc /scannow va être relancée… | L’‘image Windows n’'a pas été réparée. Voir les logs | NA | NA | L’‘image Windows n’'est pas réparable. |