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