none
Backup component Batterie de serveurs could not be found RRS feed

  • Discussion générale

  • Bonjour,

    Disposant d'un script de sauvegarde de la ferme, la batterie de serveur n'est plus disponible donc incapable d'effectuer ses sauvegardes automatiques.

    Ce n'est pas un soucis d'espace disque ni de configuration du script (il n'a pas été modifié).

    Je ne vois aucune autre pistes de recherche pouvant m'aider à résoudre ce problème de sauvegarde, qui se fait automatiquement.

    Auriez-vous une idée s'il vous plaît ?

    mercredi 12 février 2014 10:40

Toutes les réponses

  • Bonjour, 

    J'ai quelques questions : 

    • Quel sont les logs d'erreurs du script ?
    • Est ce que tu pourrais nous transmettre le code du script en question ?
    • Sur quel serveur est exécuté le script (frontal, applicatif) ?

    Cordialement, 


    Julian GILBERT

    mercredi 12 février 2014 12:34
    • Quel sont les logs d'erreurs du script ?

    FarmBackup : Cannot validate argument on parameter 'bckMethod'. The argument "" does not belong to the set "Full,Differ
    ential" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.
    At S:\Admin\Scripts\Backup-spfarm.ps1:162 char:22
    + FarmBackup -bckMethod <<<<  $script:args[0]
        + CategoryInfo          : InvalidData: (:) [FarmBackup], ParameterBindingValidationException
        + FullyQualifiedErrorId : ParameterArgumentValidationError,FarmBackup

    • Est ce que tu pourrais nous transmettre le code du script en question ?

    cf pj

    #script variables config
    #MAIL --> paramètre Notification Mail
    $emailfrom = "xxxxxx"
    $emailto = "xxxxxxxx"
    $smtpserver = "xxxxxxx"
    $subject = "xxxxxxx"
    $ErrorMessage = ""
    #MAIL
    $backupDirectory = "\\nom du srv\SPSBackups$\Farm_Backup"
    $spbrtoc = "\\nom du srv\SPSBackups$\Farm_Backup\spbrtoc.xml"
    $cleanOldBackup = $true
    $retentionFullBackupNumber = 3
    #end script variables config
    function FarmBackup {
     Param(
       [Parameter(Mandatory=$true,ValueFromPipeline=$false)] 
       [ValidateSet("Full","Differential")]
       [String]
       $bckMethod 
     )
     process
     {
      try
      {
       #load SharePoint PowerShell Components
       Add-PSSnapin Microsoft.SharePoint.PowerShell –ErrorAction SilentlyContinue
       Backup-SPFarm -Directory \\nom du srv\SPSBackups$\Farm_Backup -BackupMethod $bckMethod
       if (!$?) {
        $ErrorMessage = $error[0]
        SendReport $ErrorMessage 
       }
      }
      catch
      {
       $ErrorMessage = $error[0]
       SendReport $ErrorMessage 
      }
     }
    }
    function CleanFarmBackup {
     #load SharePoint PowerShell Components
     Add-PSSnapin Microsoft.SharePoint.PowerShell –ErrorAction SilentlyContinue
     # Import the Sharepoint backup report xml file
     [xml]$sp = gc $spbrtoc
     # Find the FULL backups in spbrtoc.xml
     $fullBck = $sp.SPBackupRestoreHistory.SPHistoryObject | ?{$_.SPBackupMethod -eq "Full"}
     
     if ($fullBck.count -gt $retentionFullBackupNumber)
     {
      #get All Backup Before the date of the last Backup
      $date = $fullBck[$retentionFullBackupNumber].SPStartTime
      $old = $sp.SPBackupRestoreHistory.SPHistoryObject | ?{ $_.SPStartTime -le ($date) }
      if ($old -eq $Null)
      {
       break;
      }
      # Delete the old backups from the Sharepoint backup report xml file
      $old | % { $sp.SPBackupRestoreHistory.RemoveChild($_) }
     
      # Delete the physical folders in which the old backups were located
      $old | % { Remove-Item $_.SPBackupDirectory -Recurse }
      
      #Find Differential Backup rattached to the more recent delete backup
      $continue = $true
      While ($continue)
      {
       $lastChild = $sp.SPBackupRestoreHistory.LastChild
       #Delete found differential backup, because the previous full backup was deleted
       if ($lastChild.SPBackupMethod -eq "Differential")
       {
        # Delete the old backups from the Sharepoint backup report xml file
        $sp.SPBackupRestoreHistory.RemoveChild($lastChild)
        # Delete the physical folders in which the old backups were located
        Remove-Item $lastChild.SPBackupDirectory -Recurse
        $continue = $true
       }
       else
       {
        $continue = $false
       }
       
      }
      
      # Save the new Sharepoint backup report xml file
      $sp.Save($spbrtoc)
     }
     
    }
    function SendReport {
     
     param([string]$htmlContent)
     
     if ($smtpserver -and $emailfrom -and $emailto -and $subject)
     {
      $smtp = New-Object Net.Mail.SmtpClient($smtpserver)
      if ($emailto.contains(";"))
      {
       $emailTo1 = $emailto.split(";")[0]
      }
      else
      {
       $emailTo1 = $emailto
      }
      
      $msg = New-object Net.Mail.MailMessage($emailfrom, $emailTo1, $subject, "")
      foreach ($dest in $emailto.split(";"))
      {
       if ($dest -ne $emailTo1)
       {
        $msg.To.add($dest);
       }
      }
      $msg.BodyEncoding = New-Object System.Text.utf8encoding
      $EmailBody = $htmlContent
      $msg.Body = $EmailBody
      $msg.IsBodyHtml = $true
      $smtp.send($msg) 
     }
    }
    function GenerateHTMLFile {
     
     [xml]$sp = gc $spbrtoc
     $htmlContent = "<html><head></head><body>"
     $htmlContent = $htmlContent + "<tr><td>Message:</td><td>"+ $ErrorMessage  +"</td></tr><br/><br/>"
     $htmlContent = $htmlContent + "<u>nom du srv SPS 2010 BACKUP HISTORY :</u><br/><br/>"
     $htmlContent = $htmlContent + "<table style='border-collapse: collapse' >"
     $htmlContent = $htmlContent + "<tr><th style='border-bottom:2px solid #6678b1;margin-right:15px;margin-left:15px;'>Backup Type</th><th style='border-bottom:2px solid #6678b1;margin-right:15px;margin-left:15px;'>Backup Method</th><th style='border-bottom:2px solid #6678b1;margin-right:40px;margin-left:40px;'>StartTime</th><th style='border-bottom:2px solid #6678b1;margin-right:15px;margin-left:15px;'>FinishTime</th><th style='border-bottom:2px solid #6678b1;margin-right:15px;margin-left:15px;'>WarningCount</th><th style='border-bottom:2px solid #6678b1;margin-right:15px;margin-left:15px;'>ErrorCount</th><th style='border-bottom:2px solid #6678b1;margin-right:15px;margin-left:15px;'>BackupSize</th></tr>"
     for ($cpt = 0 ; $cpt -lt $sp.SPBackupRestoreHistory.SPHistoryObject.count ; $cpt++)
     { 
      
      $colItems = (Get-ChildItem $sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPBackupDirectory -recurse | Measure-Object -property length -sum) 
      $backupSize = "{0:N2}" -f ($colItems.sum / 1MB) + " MB"
      $htmlContent = $htmlContent + "<tr align=center style='background-color:#81F781;'>"
      $htmlContent = $htmlContent + "<td style='border-bottom:2px solid white;'>" + $sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPTopComponent + "</td>" + "<td style='border-bottom:2px solid white;'>" + $sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPBackupMethod + "</td>" + "<td style='border-bottom:2px solid white;'>" + ([datetime]$sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPStartTime).tolocaltime() + "</td>" + "<td style='border-bottom:2px solid white;'>" + ([datetime]$sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPFinishTime).tolocaltime() + "</td>" + "<td style='border-bottom:2px solid white;'>" + $sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPWarningCount + "</td>" + "<td style='border-bottom:2px solid white;'>" + $sp.SPBackupRestoreHistory.SPHistoryObject[$cpt].SPErrorCount + "</td>" + "<td style='border-bottom:2px solid white;'>" + $backupSize + "</td>"
      $htmlContent = $htmlContent + "</tr>"
     }
     
     $htmlContent = $htmlContent + "</table>"
     $htmlContent = $htmlContent + "</body></html>"
     return $htmlContent
    }
    FarmBackup -bckMethod $script:args[0]
    if ($cleanOldBackup) { CleanFarmBackup }
    $content = GenerateHTMLFile
    SendReport $content

    • Sur quel serveur est exécuté le script (frontal, applicatif) ?

    il est exécuté sur le serveur applicatif, il a toujours fonctionné (presque 2 ans) cela dit dans la notification par mail de l'historique de sauvegarde, il apparait le message mis en objet de la question.

    mercredi 12 février 2014 13:46
  • Bonjour, 

    Quel est l'argument que tu passes lors de l'exécution du script powershell (le script attend un argument 0)

    (exemple: Backup-spfarm.ps1 "Full")


    Julian GILBERT

    mercredi 12 février 2014 14:16
  • Il est lancé avec 2 tâches planifiées avec comme argument Full et Differential.
    mercredi 12 février 2014 15:04
  • Les tâches planifiées sont bien lancées avec une élévation de privilèges ?
    mercredi 12 février 2014 15:25
  • Au vu de l'erreur, on dirait que l'argument passé au powershell est vide.

    Tu peux ajouter du code pour vérifier si l'argument passé est correct : 

    $parametre = $script:args[0]
    Write-Host "Argument : $parametre"



    Julian GILBERT

    mercredi 12 février 2014 15:48
  • Oui elles sont bien lancées avec.

    mercredi 12 février 2014 15:54
  • J'ai vérifié ce n'est pas un problème d'argument j'ai lancé pour test le script et les arguments renseignés sont correct.


    mercredi 12 février 2014 15:57
  • L'erreur cible pourtant clairement un problème d'argument.

    Est ce que tu peux appeler la fonction en forçant l'argument :

    FarmBackup -bckMethod "Full"

    Julian GILBERT

    mercredi 12 février 2014 16:02
  • Voici le résultat avec l'argument "Differential" et "Full" :

    Backup-SPFarm : Backup component Batterie de serveurs could not be found.
    At line:1 char:14
    + Backup-SPFarm <<<<  -Directory \\nom du srv\SPSBackups$\Farm_Backup -BackupMethod "Differential"
        + CategoryInfo          : InvalidData: (Microsoft.Share...mdletBackupFarm:SPCmdletBackupFarm) [Backup-SPFarm], SPE
       xception
        + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletBackupFarm

    Le message d'erreur qui préoccupe est bien celui-là :  Backup component Batterie de serveurs could not be found.

    Par contre le lancement de la sauvegarde via la console d'administration fonctionne quand elle est faite manuellement....
    mercredi 12 février 2014 16:11
  • OK, cette erreur est déjà plus ciblée.

    Plusieurs vérifications à effectuer : 

    (Tu peux essayer de lancer le début du Configuration Wizard pour voir si ton compte à les droits ) 


    Julian GILBERT

    mercredi 12 février 2014 16:38
    • Comme mentionné par Olivier, est ce que tu as essayé de lancer le script / taches avec une élévation de privilège.

    Oui, les 2 tâches sont bien configurées avec l'option "Run with highest privileges"

    • Est ce que ton compte à les droits admins sur le serveur ? 

    Le compte de service associé à la batterie de serveurs est bien celui configuré dans les tâches planifiées

    • Est ce que ton compte à es droits sur la base de configuration ?

    Il dispose effectivement des droits sur la base

    mercredi 12 février 2014 17:13
  • Bonjour, 

    Est ce que tu peux te connecter sur le serveur avec le compte de service utilisé pour lancer le script ?


    Julian GILBERT

    samedi 15 février 2014 11:32