class NsBackupSchedulingStatus

La classe NsBackupSchedulingStatus représente les indicateurs des prochains déclenchements d'une sauvegarde déterminés en fonction de ses paramètres de planification récurrents (NsBackupScheduling), s'ils sont utilisés.

Vous pouvez utiliser cette classe pour connaître le prochain déclenchement automatique d'une sauvegarde ou contrôler que celle-ci est bien exécutée conformément à ses paramètres de planification.

Les dates de déclenchement sont toujours exprimés dans un référenciel UTC, quelque soit la timezone dans lequel opère l'agent client. Elles peuvent être converties en heures locales en utilisant la fonction UTCToLocal de la classe NsScriptUtils.

Si la sauvegarde est uniquement déclenchée de manière manuelle ou en utilisant le système de plans d'exécution, ces paramètres ne sont pas renseignés.

NextExecutionState : enum NsSchedulingNextExecState readonly

Le statut de la prochaine exécution planifiée de la sauvegarde.

HasNextExecutionDate : VARIANT_BOOL readonly

Retourne un booléen indiquant si la date de prochaine exécution planifiée de la sauvegarde est connue par le serveur, autrement dit, si NextExecutionState vaut nsSchedulingNextExecStateAtSpecificDate.

NextExecutionDate : VARIANT readonly

La date de prochaine exécution planifiée. Elle n'est disponible que si HasNextExecutionDate vaut true.

MissedEventState : enum NsSchedulingMissedEventState readonly

Le statut du premier déclenchement manqué de la sauvegarde, si celle-ci accuse un retard d'exécution sur sa planification.

HasMissedEvent : VARIANT_BOOL readonly

Retourne un booléen indiquant si la sauvegarde accuse un retard de déclenchement sur sa planification, autrement dit, si MissedEventState vaut nsSchedulingMissedEventStateHasMissedEvent.

MissedEventDate : VARIANT readonly

La date de prochaine exécution planifiée. Elle n'est disponible que si HasMissedEvent vaut true.

SchedulingDelayInMinutes : long readonly

Le retard exprimé en minutes entre la date du jour et le premier événement manqué. Elle vaut un nombre entier positif, -1 si la sauvegarde n'est pas planifée, ou 0 si aucun retard de planification n'est à constater.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 BackupID)

Charge en mémoire le statut de planification de la sauvegarde d'identificateur BackupID.

Affichage des sauvegardes non exécutées conformément à leurs planifications

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

S = ""
schedulingErrors = 0
hasMissedEvents = false

if connection.ConnectToLocalServer then  ' Se connecter au serveur local
  set server = CreateObject("NsAPI.NsServer")

  if server.Load(connection) then ' Chargement des infos serveur
    set backupsList = server.AllBackups(connection) ' Obtention de la liste de toutes les sauvegardes
    
    for each backup in backupsList ' Pour chaque sauvegarde...
      set backupStats = CreateObject("NsAPI.NsBackupStats")

      if not backupStats.LoadFromID(connection, backup.ID) then ' Charger ses statistiques
        MsgBox "Impossible de charger les statistiques sur la sauvegarde"
      else
        set schedulingStatus = backupStats.SchedulingStatus ' Obtenir son statut de planification

        if schedulingStatus.HasMissedEvent then ' La sauvegarde a au moins un déclenchement manqué...
          hasMissedEvents = true ' On l'enregistre en mémoire...
          schedulingErrors = schedulingErrors + 1 ' Et on incrément le nombre de sauvegardes non déclenchées conformément à leur planification
          S = S & vbCrLf & "Problème avec la sauvegarde ''" & backup.Name & "'' : elle aurait du être lancée le " & sysUtils.UTCToLocal(schedulingStatus.MissedEventDate) & " (" & schedulingStatus.SchedulingDelayInMinutes  & " minutes de retard sur la planification)"
        end if
      end if
    next

    ' Affiche le dialogue d'information
    if hasMissedEvents then
      MsgBox schedulingErrors & " sauvegarde(s) ne se sont pas déclenchées conformément à leurs planifications : " & vbCrLf & S
    else
      MsgBox "Toutes les sauvegardes planifiées se sont déclenchées conformément à leur planification programmée."
    end if
    
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if

Recherche des utilisateurs connectés dont les sauvegardes planifiées ne sont pas exécutées par l'agent

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")
Set userObjectsLoader = CreateObject("NsAPI.NsLoadUserObjects")

S = ""
nonExecutedBackups = 0

if connection.ConnectToLocalServer then  ' Se connecter au serveur local
  set server = CreateObject("NsAPI.NsServer")

  if server.Load(connection) then ' Chargement des infos serveur
    set allGroups = server.UserGroups(connection)
    
    for each group in allGroups
      set users = group.Users(connection)
      
      for each user in users
        ' On ne s'interesse qu'aux utilisateurs connectés
        if user.IsConnected then
          ' Charger les informations sur l'utilisateur
          if userObjectsLoader.LoadFromID(connection, user.ID) then
            ' Obtenir la liste des statistiques pour les sauvegardes de l'utilisateur
            set backupsStats = userObjectsLoader.ListOfBackupStats
            ' On cherche les sauvegardes planifiées non exécutées par les agents
            nonExecutedBackups = 0
            for each backupStats in backupsStats
              ' Est-ce que la sauvegarde a un retard de planification ?
              if backupStats.schedulingStatus.SchedulingDelayInMinutes > 0 then
                nonExecutedBackups = nonExecutedBackups + 1
              end if
            next
            ' Si des sauvegardes planifiées ne sont pas exécutées alors que l'agent est connecté
            ' alors, il y a un problème !
            if nonExecutedBackups > 0 then
              S = S & "Problème avec l'utilisateur ''" & user.FullName & "'' : l'utilisateur est connecté mais " & nonExecutedBackups & " de ses sauvegardes ne sont pas lancées." & vbCrLf
            end if
          else
            MsgBox "Impossible de charger les données utilisateur !"
          end if
        end if
      next
    next
    
    if S <> "" then
      MsgBox S
    else
      MsgBox "Tous les utilisateurs connectés ont exécuté correctement leurs sauvegardes conformément à leurs planifications."
    end if
    
  else
    MsgBox "Impossible de charger les informations serveur."
  end if
  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if