La classe NsExecPlanMember représente un membre d'un plan d'exécution, pointant sur une sauvegarde, un utilisateur ou un groupe d'utilisateurs. Si le membre ne désigne pas directement une sauvegarde, la liste des sauvegardes à exécuter est déterminée en obtenant la liste complète des sauvegardes attribuées au membre lors du début du plan d'exécution.
L'identificateur unique du membre du plan d'exécution. Les constantes suivantes peuvent-être utilisées :
L'identificateur unique du plan d'exécution parent, de type NsExecPlan.
Le type du membre : sauvegarde, utilisateur, ou groupe d'utilisateurs.
L'identifiant numérique du membre.
Réservé.
Charge en mémoire le plan d'exécution d'identificateur ExecPlanMemberID.
Met à jour le membre représenté par l'objet.
Supprime le membre représentée par l'objet.
Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")
const epdExecPlanDayNone = &h00000000
const epdExecPlanDayMonday = &h00000001
const epdExecPlanDayTuesday = &h00000002
const epdExecPlanDayWednesday = &h00000004
const epdExecPlanDayThursday = &h00000008
const epdExecPlanDayFriday = &h00000010
const epdExecPlanDaySaturday = &h00000020
const epdExecPlanDaySunday = &h00000040
const mtBackup = 1
const mtUser = 2
const mtGroup = 3
' Renvoit une sauvegarde à partir de son nom
Function FindBackupByName(backups, connection, name)
set FindBackupByName = nothing
for each backup in backups
if StrComp(backup.Name, name, vbTextCompare) = 0 then
set FindBackupByName = backup
Exit Function
end if
next
End Function
' Renvoit un groupe d'utilisateurs à partir de son nom
Function FindGroupByName(groups, connection, name)
set FindGroupByName = nothing
for each group in groups
if StrComp(group.Description, name, vbTextCompare) = 0 then
set FindGroupByName = group
Exit Function
end if
next
End Function
' Renvoit un utilisateur à partir de son nom
Function FindUserByName(groups, connection, name)
set FindUserByName = nothing
for each group in groups
set users = group.Users(connection)
for each user in users
if StrComp(user.Description, name, vbTextCompare) = 0 then
set FindUserByName = user
Exit Function
end if
next
next
End Function
if connection.ConnectToLocalServer then
set server = CreateObject("NsAPI.NsServer")
if server.Load(connection) then ' Chargement des infos serveur
set groupsList = server.UserGroups(connection)
set backupsList = server.AllBackups(connection)
execPlanName = InputBox("Saisissez le nom du plan d'exécution à créer:", "Test de l'API UB", "")
if execPlanName <> "" then
set execPlan = CreateObject("NsAPI.NsExecPlan")
execPlan.ID = -1 'Constante nécessaire pour créer le plan
execPlan.Name = execPlanName
execPlan.StartHour = 20 'Heure de début de plan: 20h
execPlan.StopHour = 6 'Heure de fin de plan : 6h du matin
execPlan.Days = epdExecPlanDayMonday or epdExecPlanDayTuesday or epdExecPlanDayWednesday or epdExecPlanDayThursday or epdExecPlanDayFriday ' Tous les jours de la semaine
execPlan.AllBackups = false ' On va spécifier les membres manuellement
execPlan.MaxConcurrentBackups = 3 '3 sauvegardes à la fois
execPlan.MaxOperationsToKeep = 10 '10 exécutions à garder
execPlan.ReportingMode = 0 'Pas d'e-mails de notification
execPlan.Options = 0 'Pas d'options supplémentaires
if not execPlan.Update(connection) then 'Création sur le serveur
MsgBox "Impossible de créer le plan d'exécution."
else
set memberToAdd = CreateObject("NsAPI.NsExecPlanMember")
do while true
objectFound = false
' Demander à saisir le nom de l'objet à ajouter au plan d'exécution
objectName = InputBox("Saisissez le nom d'un object à ajouter au plan :", "Test de l'API UB", "")
if objectName = "" then
Exit Do ' L'utilisateur a annulé la saisie. On sort de la boucle.
end if
' D'abord, chercher une sauvegarde portant le nom saisi.
set backupObj = FindBackupByName(backupsList, connection, objectName)
' Une sauvegarde correspond !
if not backupObj is nothing then
objectFound = true
' L'objet entré est une sauvegarde.
memberToAdd.ID = -1
memberToAdd.ExecPlanID = execPlan.ID
memberToAdd.MemberType = mtBackup
memberToAdd.MemberID = backupObj.ID
memberToAdd.Options = 0
if not memberToAdd.Update(connection) then ' Ajout du membre.
MsgBox "Impossible d'ajouter la sauvegarde " & backupObj.Name & " au plan d'exécution."
else
If MsgBox("La sauvegarde " & backupObj.Name & " a été ajoutée avec succès. Souhaitez-vous ajouter d'autres membres ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbNo then
Exit Do
end if
end if
end if
if not objectFound then
' Ensuite, chercher un utilisateur portant le nom saisi.
set userObj = FindUserByName(groupsList, connection, objectName)
if not userObj is nothing then
objectFound = true
' L'objet entré est un utilisateur.
memberToAdd.ID = -1
memberToAdd.ExecPlanID = execPlan.ID
memberToAdd.MemberType = mtUser
memberToAdd.MemberID = userObj.ID
memberToAdd.Options = 0
if not memberToAdd.Update(connection) then ' Ajout du membre.
MsgBox "Impossible d'ajouter l'utilisateur " & userObj.Description & " au plan d'exécution."
else
If MsgBox("L'utilisateur " & userObj.Description & " a été ajouté avec succès. Souhaitez-vous ajouter d'autres membres ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbNo then
Exit Do
end if
end if
end if
end if
if not objectFound then
' Enfin, chercher un utilisateur portant le nom saisi.
set groupObj = FindGroupByName(groupsList, connection, objectName)
if not groupObj is nothing then
objectFound = true
' L'objet entré est un groupe.
memberToAdd.ID = -1
memberToAdd.ExecPlanID = execPlan.ID
memberToAdd.MemberType = mtGroup
memberToAdd.MemberID = groupObj.ID
memberToAdd.Options = 0
if not memberToAdd.Update(connection) then ' Ajout du membre.
MsgBox "Impossible d'ajouter le groupe " & groupObj.Description & " au plan d'exécution."
else
If MsgBox("Le groupe " & groupObj.Description & " a été ajouté avec succès. Souhaitez-vous ajouter d'autres membres ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbNo then
Exit Do
end if
end if
end if
end if
' Si on arrive ici, aucun objet pourtant le nom saisi n'a pu être trouvé.
if not objectFound then
MsgBox "Aucun utilisateur, groupe d'utilisateurs, ou sauvegarde portant le nom """ & objectName & """ n'a pu être trouvé."
end if
loop
if not execPlan.Update(connection) then ' Mise à jour
MsgBox "Impossible de mettre à jour le plan d'exécution."
else
MsgBox "Le plan d'exécution a été créé, il contient actuellement " & execPlan.members(connection).Count & " membres."
end if
end if
end if
else
MsgBox "Impossible de charger les informations serveur."
end if
connection.Disconnect
else
MsgBox "Connexion au serveur local impossible."
end if