Question
Aide pour de l'optimisation
- Marc
- Hors Ligne
- Membre premium
-
- Messages : 90
- Remerciements reçus 0
#Ajout de la propriété FileVersionUpdated pour System.IO.FileInfo ( get-item , get-childitem disposeront de cette nouvelle propriétée)
#VersionInfo.FileVersion est buggée de base
Update-TypeData -Force -TypeName System.IO.FileInfo -MemberName FileVersionUpdated -MemberType ScriptProperty -Value {
[System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName) | % {
[Version](($_.FileMajorPart, $_.FileMinorPart, $_.FileBuildPart, $_.FilePrivatePart)-join\".\"«»)
}
}
Get-ChildItem -recurse ($Path) -include ($Filter) -File -OutBuffer 1000 -ErrorAction SilentlyContinue | Select-Object Fullname , Name , DirectoryName , Length , CreationTime , LastWriteTime , FileVersionUpdated
[/code:1]
C'est dit en commentaire
Et comme toujours un peut de lecture
Là
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
pour la variable $gciblock elle contient un bout de script entre accolade qui serra exécuté par la commande start-job plus long dans le scriptje ne comprend vraiment pas cette partie, cette variables $gciblock
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Valeze écrit:
Tu m'étonnes !Je n'ai quasiment jamais fait de script avant, alors commencer directement par de \"l'optimisation\" ça fait un choc xD
Quel langage de programmation connais-tu ?
Update-TypeData permet de créer un membre personnalisé pour UN type là où Add-member le fait pour une instance (un objet).
Tu peux faire la même chose avec un fichier .ps1xml.
$GciBloc est un Scriptblock, du code qui n'est pas nommé comme peut l'être une fonction, un script ou un module.
Par exemple les cmdlet xx-Object les utilisent pour paramétrer leur traitement.
Tu peux regarder l'outil PSScriptAnalyzer qui te donneras qq infos sur la qualité du code et chose à ne pas faire.
Ensuite l'idéal eut été de créer des test de non régression avec Pester.
Et vue de ma fenêtre tu devrais déjà comprendre comment PS fonctionne avant de chercher à optimiser.
De plus tu as un base de données, qui peut aussi être concernée par les temps de réponse (index adéquates ? ).
Enfin quel pb à ce code pour devoir l'optimiser ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Betrancourt
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Avec la journée d'hier et vos explication, j'ai pu bien comprendre le fonctionnement général du code, du coup petites idées ! je vais lui déplacer les \"Excludes\" dans le XML, comme ça il pourra compléter plus facilement, pour passer de ça :
[code:1] [System.Collections.ArrayList]$Folders = get-childitem -Directory C: | Select-Object FullName | ForEach-Object { $_.Fullname = $_.Fullname.trim() ; return $_}
$FoldersToExclude = @(\"C:\`$RECYCLE.BIN\",\"C:\Intel\",\"C:\IT\",\"C:\MSOCache\",\"C:\ProgramData\",\"C:\Quarantine\",\"C:\temp\",\"C:\Users\",\"C:\Windows\"«»)
foreach ($FolderToExclude in $FoldersToExclude) {
foreach($Folder in $Folders) {
if ($Folder.FullName -eq $FolderToExclude) {
$Folders.Remove($Folder)
break
}
}
} [/code:1]
à une structure plus comme ca : [code:1]$FoldersToExclude = get-xml -ConfigFilePath \"C:\Users\Y0598843\Desktop\Powershell Test\Stage\StageFranckParrinello\projet.xml\"
foreach ($FolderToExclude in $FoldersToExclude.FoldersToExclude.FoldertoExclude) {
foreach($Folder in $Folders) {
if ($Folder.FullName -eq $FolderToExclude) {
$Folders.Remove($Folder)
break
}
}
} [/code:1]
et du coup changer le XML avec des liens comme ceci par ex [code:1] <foldersToExclude>
<FolderToExclude id=\"Win\">
<path> c:\Windows </path>
</FolderToExclude>
</FoldersToExclude>
[/code:1]
Après voila, la structure et la syntaxe c'est pas encore ca
Je connais pas mal une grande parties des langages liées aux dev web (PHP, Sql, Js...) le plus simple ^^ un peu de Java aussi, du coup pour le powershell c'est facilement rentré x)<br><br>Message édité par: Valeze, à: 20/07/17 09:10
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Je connais pas mal une grande parties des langages liées aux dev web (PHP, Sql, Js...) le plus simple ^^ un peu de Java aussi, du coup pour le powershell c'est facilement rentré x)
Le langage est simple, peu d'instructions, par contre les comportements de base (scope, pipeline, binding de paramètre, etc) et certaines syntaxe nécessitent plus de temps d'apprentissage.
Dans le code soumis, il y a peu à optimiser il me semble mais certains points à améliorer, gestion d'erreur, usage de try/finally sur la connexion par exemple.
Une règle de nommage sur les jobs serait préférable et le mécanisme de logs à revoir.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Betrancourt
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 11
- Remerciements reçus 0
Dans le code soumis, il y a peu à optimiser il me semble mais certains points à améliorer, gestion d'erreur, usage de try/finally sur la connexion par exemple.
Une règle de nommage sur les jobs serait préférable et le mécanisme de logs à revoir.
un tuto ou je pourrais voir ca ?
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Aide pour de l'optimisation