Question
Aide pour de l'optimisation
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 8 mois #23985
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Aide pour de l'optimisation
Dans ma signature il y a un lien sur mes tutos, dont un sur la gestion d'erreur.
Pour le nommages des job, c'est dans le cas d'évolution du traitement où tu aurais d'autres Job.
Utiliser get-job|remove-job implique de ne pas avoir d'autres job dans la session powershell où tu exécutes ton script.
Et l'état du job n'est pas testé, le code suppose que tout fonctionne.
Pour Invoke-DatabaseQuery le bloc catch écrit dans le fichier de log mais ne redéclenche pas l'exception, l'appelant ne sais pas ce qui se passe en cas d'erreur.
Ici il s'agit d'une règle de gestion de base, pas de duplication d'entrée, mais dans le cas où il s'agit d'une autre exception, le msg est identique
Tu devrais ajouter un filtre sur le type d'exception.
Les améliorations concernent plus l'aspect support: On sait que cela ne marche pas. Reste à savoir où dans le code et pourquoi...<br><br>Message édité par: Laurent Dardenne, à: 20/07/17 11:55
Pour le nommages des job, c'est dans le cas d'évolution du traitement où tu aurais d'autres Job.
Utiliser get-job|remove-job implique de ne pas avoir d'autres job dans la session powershell où tu exécutes ton script.
Et l'état du job n'est pas testé, le code suppose que tout fonctionne.
Pour Invoke-DatabaseQuery le bloc catch écrit dans le fichier de log mais ne redéclenche pas l'exception, l'appelant ne sais pas ce qui se passe en cas d'erreur.
Ici il s'agit d'une règle de gestion de base, pas de duplication d'entrée, mais dans le cas où il s'agit d'une autre exception, le msg est identique
Tu devrais ajouter un filtre sur le type d'exception.
Les améliorations concernent plus l'aspect support: On sait que cela ne marche pas. Reste à savoir où dans le code et pourquoi...<br><br>Message édité par: Laurent Dardenne, à: 20/07/17 11:55
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Betrancourt
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 8 ans 8 mois #23986
par Betrancourt
Réponse de Betrancourt sur le sujet Re:Aide pour de l'optimisation
Merci beaucoup ^^ je pense que grâce à vous je peut m'occuper du reste maintenant, je pensais pas que le Powershell serait aussi bien en commençant
Connexion ou Créer un compte pour participer à la conversation.
- Betrancourt
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 8 ans 8 mois #23996
par Betrancourt
Réponse de Betrancourt sur le sujet Re:Aide pour de l'optimisation
ReBonjour ! je me permet de reposer une question sur le même code, voila j'ai bien avancer sur le petit projet ^^ mais il me reste encore 2 / 3 soucis que je n'arrive pas à régler 
1 : J'ai crée une liste XML (en pièce-jointe) qui j'ai liée au Powershell pour crée une liste d'exclusion de fichier à ne pas scanner dans le répertoire c:\
Voici mon code du coup :
[code:1]
$apps = get-xml -configfilepath \"C:\Users\Y0598843\Downloads\Powershell Test\Stage\StageFranckParrinello\projet.xml\"
Write-log -Level \"INFO\" -Message \"Liste des applications à détecter :\"
foreach($app in $apps.apps.app) {
Write-log -Level \"INFO\" -Message \"$($app.id) : $($app.path)\"
}
[System.Collections.ArrayList]$Folders = get-childitem -Directory C: | Select-Object FullName | ForEach-Object { $_.Fullname = $_.Fullname.trim() ; return $_}
$FoldersToExclude = get-xml -ConfigFilePath \"C:\Users\Y0598843\Downloads\Powershell Test\Stage\StageFranckParrinello\projetExclude.xml\"
foreach ($FolderToExclude in $FoldersToExclude.FoldersToExclude.FoldertoExclude) {
foreach($Folder in $Folders) {
if ($Folder.FullName -eq $FolderToExclude.path) {
$Folders.Remove($Folder)
break
}
}
}
[/code:1]
Le truc c'est que les variables prennent bien les valeurs des \"FolderToExclude\" mais le script exécute quand même un scan dans ces fichiers... je ne comprend pas, c'est pas logique xD
2 : Donc pour reparler du scan et du code du dessus, le script est censé scannez dans le C: pour ensuite faire son boulot, le problème assez bizarre qui intervient c'est que le logiciel cherche seulement dans le dossier local par exemple si je fait [code:1]cd \"C:\Users\Public\" [/code:1] il ne va scannez que dans le répertoire \"public\" au lieu de la racine c:\
excusez moi je sais que mon message est long, mais ça parait tellement dur a expliquer :/
Message édité par: Valeze, à: 21/07/17 10:22<br><br>Message édité par: Valeze, à: 21/07/17 10:26
1 : J'ai crée une liste XML (en pièce-jointe) qui j'ai liée au Powershell pour crée une liste d'exclusion de fichier à ne pas scanner dans le répertoire c:\
Voici mon code du coup :
[code:1]
$apps = get-xml -configfilepath \"C:\Users\Y0598843\Downloads\Powershell Test\Stage\StageFranckParrinello\projet.xml\"
Write-log -Level \"INFO\" -Message \"Liste des applications à détecter :\"
foreach($app in $apps.apps.app) {
Write-log -Level \"INFO\" -Message \"$($app.id) : $($app.path)\"
}
[System.Collections.ArrayList]$Folders = get-childitem -Directory C: | Select-Object FullName | ForEach-Object { $_.Fullname = $_.Fullname.trim() ; return $_}
$FoldersToExclude = get-xml -ConfigFilePath \"C:\Users\Y0598843\Downloads\Powershell Test\Stage\StageFranckParrinello\projetExclude.xml\"
foreach ($FolderToExclude in $FoldersToExclude.FoldersToExclude.FoldertoExclude) {
foreach($Folder in $Folders) {
if ($Folder.FullName -eq $FolderToExclude.path) {
$Folders.Remove($Folder)
break
}
}
}
[/code:1]
Le truc c'est que les variables prennent bien les valeurs des \"FolderToExclude\" mais le script exécute quand même un scan dans ces fichiers... je ne comprend pas, c'est pas logique xD
2 : Donc pour reparler du scan et du code du dessus, le script est censé scannez dans le C: pour ensuite faire son boulot, le problème assez bizarre qui intervient c'est que le logiciel cherche seulement dans le dossier local par exemple si je fait [code:1]cd \"C:\Users\Public\" [/code:1] il ne va scannez que dans le répertoire \"public\" au lieu de la racine c:\
excusez moi je sais que mon message est long, mais ça parait tellement dur a expliquer :/
Message édité par: Valeze, à: 21/07/17 10:22<br><br>Message édité par: Valeze, à: 21/07/17 10:26
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 : 6311
- Remerciements reçus 68
il y a 8 ans 8 mois #23998
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Aide pour de l'optimisation
A priori tu précises ici un chemin relatif :
[code:1]cd c:\windows
PS C:\windows> get-childitem -Directory C:
Directory: C:\windows
...
[/code:1]
Donc pour PS 'c:' n'est pas un path mais un nom de lecteur, petit nuance. Avec [code:1]c:\[/code:1] c'est déjà + mieux
<br><br>Message édité par: Laurent Dardenne, à: 21/07/17 15:42
[code:1]cd c:\windows
PS C:\windows> get-childitem -Directory C:
Directory: C:\windows
...
[/code:1]
Donc pour PS 'c:' n'est pas un path mais un nom de lecteur, petit nuance. Avec [code:1]c:\[/code:1] c'est déjà + mieux
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Betrancourt
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 8 ans 8 mois #23999
par Betrancourt
Réponse de Betrancourt sur le sujet Re:Aide pour de l'optimisation
Merci de m'avoir répondu mais je crois être le seul à avoir ce problème dans mon secteur informatique 
voici pour expliquer ce qui arrive quand je fait cette commande dans ma console PS :
[code:1]
PS.C:\windows > cd \"c:\users\Y0598843\desktop\"
PS.C:\users\Y0598843\desktop > get-childitem -Directory C:
(affichage du dossiers DESKTOP....)
[/code:1]
Alors que justement j'aimerai :
[code:1]
PS.C:\windows > cd \"c:\users\Y0598843\desktop\"
PS.C:\users\Y0598843\desktop > get-childitem -Directory C:
(affichage du dossiers C: ....)
[/code:1]
c'est cela qui me pose problème, le stagiaire qui travaille avec moi et mon tuteur n'ont pas de problème pour eux cela fonctionne, c'est pourtant une commande tellement simple.. ca m'énerve je suis bloqué a cause de ca
<br><br>Message édité par: Valeze, à: 21/07/17 15:21
voici pour expliquer ce qui arrive quand je fait cette commande dans ma console PS :
[code:1]
PS.C:\windows > cd \"c:\users\Y0598843\desktop\"
PS.C:\users\Y0598843\desktop > get-childitem -Directory C:
(affichage du dossiers DESKTOP....)
[/code:1]
Alors que justement j'aimerai :
[code:1]
PS.C:\windows > cd \"c:\users\Y0598843\desktop\"
PS.C:\users\Y0598843\desktop > get-childitem -Directory C:
(affichage du dossiers C: ....)
[/code:1]
c'est cela qui me pose problème, le stagiaire qui travaille avec moi et mon tuteur n'ont pas de problème pour eux cela fonctionne, c'est pourtant une commande tellement simple.. ca m'énerve je suis bloqué a cause de ca
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 8 mois #24001
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Aide pour de l'optimisation
Valeze écrit:

Est-ce la même version de PS ($Psversiontable) et le même OS ?
J'utilise la v5.1 sous Seven Sp1, testé avec la 5.1 sous WS 2016 et la v6 beta4 sous WS 2016. J'ai le même comportement que toi.
Pour le path du fileSystem il y a ceci à connaitre.
Enfin tu peux vérifier le comportement de la commande ainsi :
[code:1]Trace-Command PathResolution -Expression { get-childitem -Directory C: } -PSHost[/code:1]
Tu fais bien du Powershellca m'énerve je suis bloqué a cause de ca
Est-ce la même version de PS ($Psversiontable) et le même OS ?
J'utilise la v5.1 sous Seven Sp1, testé avec la 5.1 sous WS 2016 et la v6 beta4 sous WS 2016. J'ai le même comportement que toi.
Pour le path du fileSystem il y a ceci à connaitre.
Enfin tu peux vérifier le comportement de la commande ainsi :
[code:1]Trace-Command PathResolution -Expression { get-childitem -Directory C: } -PSHost[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.053 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Aide pour de l'optimisation