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.
Le statut de la prochaine exécution planifiée de la sauvegarde.
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.
La date de prochaine exécution planifiée. Elle n'est disponible que si HasNextExecutionDate vaut true.
Le statut du premier déclenchement manqué de la sauvegarde, si celle-ci accuse un retard d'exécution sur sa planification.
Retourne un booléen indiquant si la sauvegarde accuse un retard de déclenchement sur sa planification, autrement dit, si MissedEventState vaut nsSchedulingMissedEventStateHasMissedEvent.
La date de prochaine exécution planifiée. Elle n'est disponible que si HasMissedEvent vaut true.
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.
Charge en mémoire le statut de planification de la sauvegarde d'identificateur BackupID.
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
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