Question
simplifier code
- Damien Commenge
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 4
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31160
par Damien Commenge
simplifier code a été créé par Damien Commenge
Bonjour,
C'est une question basique, mais j'aimerais savoir s'il est possible de simplifier le code suivant car je ne vois pas comment et pour autant, je le trouve assez "lourd" à lire
PS : Cela permet de savoir pour un job de sauvegarde veeam la périodicité à laquelle le job est exécuté. Le problème étant que pour le savoir, il faut savoir laquelle de ces 5 conditions vaut $true.
Je ne vois pas comment faire un switch / case dans le cas ou la condition à évaluer est differente à chaque fois :/
Merci par avance
C'est une question basique, mais j'aimerais savoir s'il est possible de simplifier le code suivant car je ne vois pas comment et pour autant, je le trouve assez "lourd" à lire
PS : Cela permet de savoir pour un job de sauvegarde veeam la périodicité à laquelle le job est exécuté. Le problème étant que pour le savoir, il faut savoir laquelle de ces 5 conditions vaut $true.
Je ne vois pas comment faire un switch / case dans le cas ou la condition à évaluer est differente à chaque fois :/
if($BackupJob.ScheduleOptions.OptionsDaily.Enabled)
{
$type = "Daily"
}
if($BackupJob.ScheduleOptions.OptionsMonthly.Enabled)
{
$type = "Monthly"
}
if($BackupJob.ScheduleOptions.OptionsPeriodically.Enabled)
{
$type = "Periodically"
}
if($BackupJob.ScheduleOptions.IsContinious
)
{
$type = "Continusly"
}
if($BackupJob.ScheduleOptions.OptionsScheduleAfterJob.IsEnabled -eq $true)
{
$type = "Chained"
}
Merci par avance
Dernière édition: il y a 2 ans 8 mois par Damien Commenge.
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 186
- Remerciements reçus 37
il y a 2 ans 8 mois #31163
par ericlm128
Réponse de ericlm128 sur le sujet simplifier code
Je ne voudrais pas mettre le bazar car je ne connais pas Powershell pour les VM, mais ils semble que le ScheduleOptions peux avoir plusieurs "type" ("Option..". à $true)
helpcenter.veeam.com/docs/backup/powersh...options.html?ver=110
Voici un autre script la personne semble faire à peux près la même chose
virtualvt.wordpress.com/2019/12/12/autom...am-backup-report-v2/
helpcenter.veeam.com/docs/backup/powersh...options.html?ver=110
Voici un autre script la personne semble faire à peux près la même chose
virtualvt.wordpress.com/2019/12/12/autom...am-backup-report-v2/
Connexion ou Créer un compte pour participer à la conversation.
- Damien Commenge
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 4
il y a 2 ans 8 mois #31165
par Damien Commenge
Réponse de Damien Commenge sur le sujet simplifier code
Merci pour le retour.
Il ne peut y en avoir qu'un seul parmi la liste que j'ai fournie.
Le job est planifié soit :
-tous les jours (ou avec des options sur les jours)
-tous les mois (ou avec des options sur les mois)
-....
Et parmi les 5 possibilitées, une seule aura pour valeur $true.
Dans le script que tu as mis en effet la personne fait la même chose que moi donc je suppose qu'il n'y a pas de façon d'améliorer ça.
Si jamais tout cela avait était un attribut qui changeait de valeur en fonction de mois / jour / continuellement / .... le switch case aurait été parfait ^^
Il ne peut y en avoir qu'un seul parmi la liste que j'ai fournie.
Le job est planifié soit :
-tous les jours (ou avec des options sur les jours)
-tous les mois (ou avec des options sur les mois)
-....
Et parmi les 5 possibilitées, une seule aura pour valeur $true.
Dans le script que tu as mis en effet la personne fait la même chose que moi donc je suppose qu'il n'y a pas de façon d'améliorer ça.
Si jamais tout cela avait était un attribut qui changeait de valeur en fonction de mois / jour / continuellement / .... le switch case aurait été parfait ^^
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 186
- Remerciements reçus 37
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31166
par ericlm128
Réponse de ericlm128 sur le sujet simplifier code
Maintenant que nous savons que nous sommes obligé de faire comme ceci voici quelques idée pour modifier ce code.
J'ai pris trois variables booléens $a, $b et $c avec les textes correspondants "Nom a", "Nom b" et "Nom c"
La méthode 1 parait la plus simple, lisible et naturelle
Les 3 results on "Nom b"
Si le comportement que tu recherche est récurent dans ton code une fonction semble adaptée
J'ai pris trois variables booléens $a, $b et $c avec les textes correspondants "Nom a", "Nom b" et "Nom c"
La méthode 1 parait la plus simple, lisible et naturelle
$a = $false
$b = $true
$c = $false
# Méthode 1
$result1 = if ($a) {"Nom a"}
elseif ($b) {"Nom b"}
elseif ($c) {"Nom c"}
# Méthode 2
$array = @(@("Nom a", $a), @("Nom b", $b), @("Nom c", $c))
$result2 = ($array | Where-Object {$_[1]})[0]
# Méthode 3
$tab = @("Nom a", "Nom b", "Nom c")
$result3 = $tab[([int]$a * 1 + [int]$b * 2 + [int]$c * 3) - 1]
Les 3 results on "Nom b"
Si le comportement que tu recherche est récurent dans ton code une fonction semble adaptée
Dernière édition: il y a 2 ans 8 mois par ericlm128.
Connexion ou Créer un compte pour participer à la conversation.
- Damien Commenge
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 4
il y a 2 ans 8 mois #31168
par Damien Commenge
Réponse de Damien Commenge sur le sujet simplifier code
Merci pour ton retour.
En effet, la méthode 1 semble être la plus facile à lire
Dans mon cas précis, je me rends compte qu'il ne semble pas y avoir de solutions plus simple au final que ce que j'ai écris en dehors du fait de passer par des elseif et non pas de multiples if. Je vais donc effectuer cette modification et te remercie
Je n'ai mis qu'un extrait de code de ma fonction parce qu'elle fait 50 lignes environs et que cela n'apporterait que peu d'intérêt par rapport à ma problèmatique de tout mettre !
En effet, la méthode 1 semble être la plus facile à lire
Dans mon cas précis, je me rends compte qu'il ne semble pas y avoir de solutions plus simple au final que ce que j'ai écris en dehors du fait de passer par des elseif et non pas de multiples if. Je vais donc effectuer cette modification et te remercie
Je n'ai mis qu'un extrait de code de ma fonction parce qu'elle fait 50 lignes environs et que cela n'apporterait que peu d'intérêt par rapport à ma problèmatique de tout mettre !
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 186
- Remerciements reçus 37
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31169
par ericlm128
Réponse de ericlm128 sur le sujet simplifier code
L'intérêt principal de la première méthode est la simplification d'assignation 1 seul fois $result1 = ...
$a = $(
if ($false) {"a"}
if ($true) {"b"}
if ($false) {"c"}
)
$a
Dernière édition: il y a 2 ans 8 mois par ericlm128.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.070 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- simplifier code