Question Help Relecture de script pour bonnes pratiques

Plus d'informations
il y a 3 ans 11 mois #29817 par Radsgord
Bonjour à toute la communauté,

Je suis débutant sur ps et j’apprécie beaucoup.
Je me suis lancé le défi de créer un script de Sauvegarde.
Je souhaiterais que certains prennent le temps de la lecture afin de m'en faire un retour en me précisant ce qui est bon et surtout ce qui ne l'est pas et qui mérite soit une autre syntaxe soit de réfléchir différemment.

Merci à tous.

La pièce jointe Script_BScripting.ps1 est absente ou indisponible

Pièces jointes :

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

Plus d'informations
il y a 3 ans 11 mois #29818 par Laurent Dardenne
Salut,
qq remarques rapido.

[code:1]
Import-Module -Name 'I:\f(x) Reveil-Machine.ps1'
[/code:1]
Ici tu ne fais que charger un script en dot-source , ce n'est pas un module (.psm1).
Cette usage est possible, mais confus.

[code:1]
$FileName_Source_Classeur = \"EXPEDITION_2020.xlsm\"
[/code:1]
On peut éviter l'usage des guillemets s'il n'y a aucune substitution dans la chaîne.

Pour
[code:1]
Get-Date -Format dd.MM.yyyy_'HH\"H\"mm'
[/code:1]
ceci me semble préférable :
[code:1]
Get-Date -Format 'dd.MM.yyyy_HH\Hmm'
(Get-Date).ToString('HH\Hmm')
[/code:1]
Le mieux est d'appeler une seul fois Get-Date puis de construire les différentes représentations textuelle.

tu peux factoriser les appels de la partie \"Tester la présence des dossiers de Sauvegarde Locale\".

le commentaire \"#Filtrer que les logs \".txt\" semble faux.

Pour ceci utilise une fonction
[code:1]
Add-Content -Path $Folder_Log\$Logname_SuperVision -Value $Message
Add-Content -Path $Folder_Log\$Logname_SuperVision -Value \"\"
[/code:1]
et une here string au lieu de faire 2 appels :
[code:1]
Add-Content -Path $Folder_Log\$Logname_SuperVision -Value @\"
$Message
`r`n
\"@
[/code:1]
Correction de la création du tableau en fin de traitement :
[code:1]
$Synchro_Source_Database = @(Get-ChildItem -Path $File_Source_Database -Exclude \"*.log\", \"*.xlsm\", \"*.ps1\", \"*.ldb\" | Where-Object {!$_.PSIsContainer})
[/code:1]
Pour \"En-tête du Log Database\" -> Here-String au lieu de 8 appels.

Crée une fonction pour les apples à Robocopy.

Ici l'usage de Get-Date n'est pas nécessaire
[code:1]
(Get-Date (Get-Item 'C:\Users\004642\Documents\Sauvegarde_Expedition\Database\armoire.mdb').LastWriteTime -Format dddd.dd.MMMM-'HH\"H\"mm')
[/code:1]
Le formatage suivant est possible;car LastWriteTime est déjà un type date :
[code:1]
(get-item ''C:\Users xxx \armoire.mdb').LastWriteTime.Tostring('dddd.dd.MMMM-HH\Hmm')
[/code:1]

Enfin une broutille :
[code:1]
#
# Déclaration de la Notification par synthése vocale
#
[/code:1]
ceci me semble plus lisible :
[code:1]
# Notification par synthése vocale
[/code:1]
Dans certains éditeur VsCode par exemple on peut utiliser des regions, aucun intérêt de placer de gros pavé de texte.

Il doit y avoir d'autres trucs, faut relire + précisément.

Tutoriels PowerShell

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

Plus d'informations
il y a 3 ans 11 mois #29821 par Radsgord
Bonjour Laurent,

Un très grand merci à toi d'avoir relu ce code.
Je me colle à la correction dés ce soir et il n'est pas impossible voire même très probable que je revienne sur le forum pendant ce long week-end.

Vraiment merci beaucoup ça motive à continuer l'apprentissage et l'écriture de ce projet de voir le soutient et la rapidité apporté par des experts.

Merci aussi à tous ceux qui ont pris le temps de la lecture de mon sujet.

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

Temps de génération de la page : 0.070 secondes
Propulsé par Kunena