With same script, the ouput is not the same on Windows 10 and WindowsServer 2016

Welcome Forums General PowerShell Q&A With same script, the ouput is not the same on Windows 10 and WindowsServer 2016

Viewing 8 reply threads
  • Author
    Posts
    • #202892
      Participant
      Topics: 1
      Replies: 3
      Points: 19
      Rank: Member

      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.
    • #202943
      Participant
      Topics: 11
      Replies: 1445
      Points: 1,784
      Helping Hand
      Rank: Community Hero

      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

      First, welcome to Powershell.org!! It is a bit difficult to assist you as half of the content is in French and English, so we may need more guidance on what “letter” specifically you are seeing. Additionally, you wrapped the output with the PRE tag, but the script and last output you did not, so it’s difficult to read. A couple of tips:

      • Take a look at Switch, using the wildcard switch is a bit cleaner than doing elseif statements.
      • You can skip to dump to a file and then import the file, you can just assign it to a variable (e.g. $result = & sfc.exe /scannow)
      • Reporting can be done much easier than manually building the report line by line. There is a resource for creating HTML reports that you should take a look at. The logs are named HTML, but it appears it’s being built in plain text. If you build the report in HTML, it will give you much more flexibility.
      • If you do use HTML, ensure that you add -BodyAsHtml to your Send-MailMessage.
    • #202961
      Participant
      Topics: 1
      Replies: 3
      Points: 19
      Rank: Member

      Hello,

      Thanks for your answers.
      I’ll try to add your advice when the script will be ok on the servers too.

      I know he’s not perfect. It’s my first one and I don’t know all the tricks ūüėČ

      For my problem, to be more clear, when the script run on Windows 10, the output of $reportSFCScannow is like :

      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√©.

      As you can see, there is a new line for each verification step. It’s just the sfc /scannow normal output.

      But when I run the script on a Windows 2016 Server, there is no new line for each verification step. Everything is successive.

      So the condition “if ($content | Select-String “n’a trouv√© aucune violation d’int√©grit√©”,”any integrity violations”) {” (for example) is not OK.

      And I don’t understand what is the problem here.

      Thanks

       

    • #202976
      OK
      Participant
      Topics: 5
      Replies: 17
      Points: 60
      Rank: Member

       

      ŤŅôšĻüśĄŹŚĎ≥ÁĚÄś≠§Ś§ĄŤ∑üŤł™ÁöĄťóģťĘėšĽÖťÄāÁĒ®šļéPowerShell Core 6ŚŹäśõīťęėÁČąśú¨„ÄāWindowsPowerShellÁČĻŚģöťóģťĘėŚļĒŚú®UserVoicešłäśČĄÄā

       

       

    • #202982
      OK
      Participant
      Topics: 5
      Replies: 17
      Points: 60
      Rank: Member

      issues tracked here are only for PowerShell Core 6 and higher. Windows PowerShell specific issues should be opened on UserVoice.

    • #202985
      Participant
      Topics: 11
      Replies: 1445
      Points: 1,784
      Helping Hand
      Rank: Community Hero

      The first thing you can try is replacing the double qoutes with single qoutes. There are characters such as the accent character (`) that act as an escape character in Powershell. Using double qoutes will expand variables and Powershell will attempt to basically process the string, single qoutes are literal.

      $temp = "Blue"
      
      "The pen is $temp"
      'The pen is $temp'
      

      Output:

      The pen is Blue
      The pen is $temp
      

      See how the variable is expanded in the first example but the second is literal. Next is Select-String, it is simply looking for text and returning the line.

      PS C:\WINDOWS\system32> $content = @"
      Line1 - This is line 1
      Line2 - This is line 2
      Line3 - This is line 3
      "@ -split "`n"
      
      $content | Select-String 'line 2'
      
      Line2 - This is line 2
      

      or even if you smash the text together…

      PS C:\WINDOWS\system32> $content = @"
      Line1 - This is line 1Line2 - This is line 2Line3 - This is line 3
      "@ -split "`n"
      
      $content | Select-String 'line 2'
      
      Line1 - This is line 1Line2 - This is line 2Line3 - This is line 3
      

      Either is returning a line, which means it would work if there are line returns or not. The if statments:

      if ($content_restore_health | Select-String "ImageHealthState : Healthy") ...
      

      Basically, this is if the statement is NOT NULL, the do this. If a line is returned, then execute. Attempt to get the logging from any system and test these components to make sure each piece works for all output.

    • #203138
      Participant
      Topics: 1
      Replies: 3
      Points: 19
      Rank: Member

      Hello,

      The first thing you can try is replacing the double qoutes with single qoutes. There are characters such as the accent character (`) that act as an escape character in Powershell. Using double qoutes will expand variables and Powershell will attempt to basically process the string, single qoutes are literal.

      I’ve already tried this an it doesn’t work.

      I tried the script on another server with Windows Server 2016 and I’ve the same problem.

      So maybe is OS related but I don’t know why..

    • #203159
      Participant
      Topics: 11
      Replies: 1445
      Points: 1,784
      Helping Hand
      Rank: Community Hero

      Text parsing can be difficult in general. Doing some research, other have had similar issues with SFC output:

      https://html.developreference.com/article/19730828/uUable+to+use+the+output+of+the+command+%E2%80%9CSFC++scannow%E2%80%9D+in+powershell

      My recommendation is to follow some basic rules:

      I found this too, this a good approach where they are getting rid of all of the non-relevant entries and then continuing to parse to get to the answer:

      Check Windows File Integrity with sfc and powershell

      Just stick with it and keep in mind that other more accomplished scripters have issues with these logs in particular. When these tools are built, ensuring they are easy to parse are after thoughts. While this is your first script, you did find an advanced parsing challenge (Congratulations!!). Just think, after you figure this out you crush any parsing challenge.

    • #203306
      Participant
      Topics: 1
      Replies: 3
      Points: 19
      Rank: Member

      Hello,

      Yeah I’ve done my research too and yes, it seem that i’m not alone !

      I’ve found this : https://stackoverflow.com/questions/57749808/sfc-output-redirection-formatting-issue-powershell-batch :

      # Save the current output encoding and switch to UTF-16LE
      $prev = [console]::OutputEncoding
      [console]::OutputEncoding = [Text.Encoding]::Unicode

      # Invoke sfc.exe, whose output is now correctly interpreted and
      # apply the CRCRLF workaround.
      # You can also send output to a file, but note that Windows PowerShell’s
      # > redirection again uses UTF-16LE encoding.
      # Best to use … | Set-Content/Add-Content -Encoding …
      (sfc /?) -join “`r`n” -replace “`r`n`r`n”, “`r`n” | Tee-Object -Variable content

      # Restore the previous output encoding, which is the system’s
      # active OEM code page, which should work for other programs such
      # as ping.exe
      [console]::OutputEncoding = $prev

      
      But doesn't work.
      
      
      
      
      Just stick with it and keep in mind that other more accomplished scripters have issues with these logs in particular. When these tools are built, ensuring they are easy to parse are after thoughts. While this is your first script, you did find an advanced parsing challenge (Congratulations!!). Just think, after you figure this out you crush any parsing challenge.
      Yes, but I think it's too hard for a first one !! :DD
Viewing 8 reply threads
  • You must be logged in to reply to this topic.