Question simplifier code

Plus d'informations
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 :/
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.

Plus d'informations
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/

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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 ^^

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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
$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.

Plus d'informations
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 !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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
Propulsé par Kunena