Question
Help Relecture de script pour bonnes pratiques
- Radsgord
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 3 ans 11 mois #29817
par Radsgord
Help Relecture de script pour bonnes pratiques a été créé 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.
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 11 mois #29818
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Help Relecture de script pour bonnes pratiques
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.
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.
- Radsgord
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 3 ans 11 mois #29821
par Radsgord
Réponse de Radsgord sur le sujet Re:Help Relecture de script pour bonnes pratiques
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.
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
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Help Relecture de script pour bonnes pratiques