Question
amélioration d'une fonction basique
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 3 mois #8236
par Jacques Barathon
Ca dépend de ce que tu veux faire.
Dans le cas où ton select ne fait que sélectionner certaines propriétés, en effet il est plus rapide de ne faire le tri que sur les propriétés sélectionnées plutôt que sur les objets complets.
Par contre, si tu veux sélectionner les n premiers ou les n derniers éléments d'une liste, ça n'a de sens que si tu es sûr de l'ordre de ta liste. Dans ce cas-là, tu as intérêt à trier tes éléments avant de lancer le select.
Réponse de Jacques Barathon sur le sujet Re:amélioration d'une fonction basique
PS: j'ai lu autrefois qu'il vaut mieux mettre select-object avant sort-object pour des raisons de viteses d'executions..mais je ne sais pas trop..
Ca dépend de ce que tu veux faire.
Dans le cas où ton select ne fait que sélectionner certaines propriétés, en effet il est plus rapide de ne faire le tri que sur les propriétés sélectionnées plutôt que sur les objets complets.
Par contre, si tu veux sélectionner les n premiers ou les n derniers éléments d'une liste, ça n'a de sens que si tu es sûr de l'ordre de ta liste. Dans ce cas-là, tu as intérêt à trier tes éléments avant de lancer le select.
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 3 mois #8237
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:amélioration d'une fonction basique
Pour voir ce qui cloche dans la fonction sur ton poste, peux-tu réaliser les manips suivantes :
[code:1]
# exécuter la fonction en dot sourcing :
PS> . Get-MyFavoriteSportByJanel -newest 2
(...)
# vérifier la date d'un des articles :
PS> $date = $n.rss.channel.item[0].pubdate -as [datetime]
PS> $date
dimanche 5 décembre 2010 17:26:25
# calculer l'écart avec l'heure actuelle :
PS> ((get-date) - $date).totalhours
47,5895314650833
[/code:1]
Donne-nous tes résultats s'ils diffèrent sensiblement.
[code:1]
# exécuter la fonction en dot sourcing :
PS> . Get-MyFavoriteSportByJanel -newest 2
(...)
# vérifier la date d'un des articles :
PS> $date = $n.rss.channel.item[0].pubdate -as [datetime]
PS> $date
dimanche 5 décembre 2010 17:26:25
# calculer l'écart avec l'heure actuelle :
PS> ((get-date) - $date).totalhours
47,5895314650833
[/code:1]
Donne-nous tes résultats s'ils diffèrent sensiblement.
Connexion ou Créer un compte pour participer à la conversation.
- jojo
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 0
il y a 15 ans 3 mois #8238
par jojo
Réponse de jojo sur le sujet Re:amélioration d'une fonction basique
voici mes tests:
[code:1]
# pareseque je ne sais pas ce que veux dire: \" execution en dot sourcing\" j'ai essayé deux choses: 1- mettre la fonction dans un fichier .PS1 puis appeler la fonction
PS> . .\maFonction.ps1
PS> Get-MyFavoriteSportByJanel -newest 2
Age Titres FOOTBALL
---
-4075 h Football - Blog - Wenger : \"Benitez va durer\"
-4074 h Football - Ballon d'Or FIFA - Sneijder, l'Oranje amer
Age Titres HANDBALL
---
-4072 h Handball - Championnat d'Europe - Euro dames, mode d'emploi
-4059 h Handball - Champions League - Montpellier ? Ça va, ouf !
Age Titres NATATION
---
-4031 h Natation - Ch.France - Petit bassin - Gilot, roi du cent
-4006 h Natation - Ch.France - Petit bassin - Bousquet positive
# 2- ou bien appeler la fonction directement en la précedant d'un point !
PS> . Get-MyFavoriteSportByJanel -newest 2
Age Titres FOOTBALL
---
-4075 h Football - Blog - Wenger : \"Benitez va durer\"
-4074 h Football - Ballon d'Or FIFA - Sneijder, l'Oranje amer
Age Titres HANDBALL
---
-4072 h Handball - Championnat d'Europe - Euro dames, mode d'emploi
-4059 h Handball - Champions League - Montpellier ? Ça va, ouf !
Age Titres NATATION
---
-4031 h Natation - Ch.France - Petit bassin - Gilot, roi du cent
-4006 h Natation - Ch.France - Petit bassin - Bousquet positive
# vérifier la date d'un des articles :
PS D:\> $a=\"www.eurosport.fr/football/rss.xml\"
PS D:\> $n.Load($a)
PS D:\> $date = $n.rss.channel.item[0].pubdate -as [datetime]
PS D:\>$date
lundi 6 décembre 2010 21:35:12
# calculer l'écart avec l'heure actuelle :
PS D:\> ((get-date) - $date).totalhours
-4059,06204861111
[/code:1]
c'est bizzare ce: -4059,06204861111
Message édité par: jojo, à: 7/12/10 18:34<br><br>Message édité par: jojo, à: 7/12/10 18:36
[code:1]
# pareseque je ne sais pas ce que veux dire: \" execution en dot sourcing\" j'ai essayé deux choses: 1- mettre la fonction dans un fichier .PS1 puis appeler la fonction
PS> . .\maFonction.ps1
PS> Get-MyFavoriteSportByJanel -newest 2
Age Titres FOOTBALL
---
-4075 h Football - Blog - Wenger : \"Benitez va durer\"
-4074 h Football - Ballon d'Or FIFA - Sneijder, l'Oranje amer
Age Titres HANDBALL
---
-4072 h Handball - Championnat d'Europe - Euro dames, mode d'emploi
-4059 h Handball - Champions League - Montpellier ? Ça va, ouf !
Age Titres NATATION
---
-4031 h Natation - Ch.France - Petit bassin - Gilot, roi du cent
-4006 h Natation - Ch.France - Petit bassin - Bousquet positive
# 2- ou bien appeler la fonction directement en la précedant d'un point !
PS> . Get-MyFavoriteSportByJanel -newest 2
Age Titres FOOTBALL
---
-4075 h Football - Blog - Wenger : \"Benitez va durer\"
-4074 h Football - Ballon d'Or FIFA - Sneijder, l'Oranje amer
Age Titres HANDBALL
---
-4072 h Handball - Championnat d'Europe - Euro dames, mode d'emploi
-4059 h Handball - Champions League - Montpellier ? Ça va, ouf !
Age Titres NATATION
---
-4031 h Natation - Ch.France - Petit bassin - Gilot, roi du cent
-4006 h Natation - Ch.France - Petit bassin - Bousquet positive
# vérifier la date d'un des articles :
PS D:\> $a=\"www.eurosport.fr/football/rss.xml\"
PS D:\> $n.Load($a)
PS D:\> $date = $n.rss.channel.item[0].pubdate -as [datetime]
PS D:\>$date
lundi 6 décembre 2010 21:35:12
# calculer l'écart avec l'heure actuelle :
PS D:\> ((get-date) - $date).totalhours
-4059,06204861111
[/code:1]
c'est bizzare ce: -4059,06204861111
Message édité par: jojo, à: 7/12/10 18:34<br><br>Message édité par: jojo, à: 7/12/10 18:36
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 3 mois #8242
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:amélioration d'une fonction basique
Petite explication rapide sur le dot sourcing :
C'est une technique d'exécution d'un script ou d'une fonction qui permet de l'exécuter dans le contexte courant. On le fait en précédent le nom du script (ou de la fonction) d'un point et d'un espace.
Ca veut dire que les variables créées par le script (ou la fonction) continuent d'exister même après son exécution.
En l'occurrence, c'est comme ça que tu peux utiliser $n après l'appel à ta fonction, alors qu'en temps normal $n n'existe plus une fois la fonction exécutée.
Cela dit, ça n'explique pas ton problème...
Au cas où, tu as tapé un simple \"get-date\" pour voir si ton poste est à la bonne date ?
Et si au lieu de récupérer la propriété TotalHours, tu affiches le résultat complet de la soustraction entre (get-date) et $date, ça donne quoi ?
C'est une technique d'exécution d'un script ou d'une fonction qui permet de l'exécuter dans le contexte courant. On le fait en précédent le nom du script (ou de la fonction) d'un point et d'un espace.
Ca veut dire que les variables créées par le script (ou la fonction) continuent d'exister même après son exécution.
En l'occurrence, c'est comme ça que tu peux utiliser $n après l'appel à ta fonction, alors qu'en temps normal $n n'existe plus une fois la fonction exécutée.
Cela dit, ça n'explique pas ton problème...
Au cas où, tu as tapé un simple \"get-date\" pour voir si ton poste est à la bonne date ?
Et si au lieu de récupérer la propriété TotalHours, tu affiches le résultat complet de la soustraction entre (get-date) et $date, ça donne quoi ?
Connexion ou Créer un compte pour participer à la conversation.
- jojo
-
Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 0
il y a 15 ans 3 mois #8243
par jojo
Réponse de jojo sur le sujet Re:amélioration d'une fonction basique
Bonjour janel,
j'étais juste en train de rediger mon message
je crois que le problème est régler: c'était juste un décalage horaire dans mon PC que je vais règler.
[code:1]PS C:\> get-date;echo oooops !!
lundi 21 juin 2010 09:56:17
oooops !![/code:1]
j'ai pas pu resister
[code:1]
PS D:\> function get-CurrentTime {
>> param([string]$ville=\"rome\"«»)
>> $url = \"24timezones.com/world_directory/\"
>> cmd /c start \"\" \"${url}time_in_${ville}.php\"
>> }
>>
PS D:\> get-CurrentTime -ville paris
[/code:1]
merci janel de tout
<br><br>Message édité par: jojo, à: 8/12/10 10:28
j'étais juste en train de rediger mon message
je crois que le problème est régler: c'était juste un décalage horaire dans mon PC que je vais règler.
[code:1]PS C:\> get-date;echo oooops !!
lundi 21 juin 2010 09:56:17
oooops !![/code:1]
j'ai pas pu resister
[code:1]
PS D:\> function get-CurrentTime {
>> param([string]$ville=\"rome\"«»)
>> $url = \"24timezones.com/world_directory/\"
>> cmd /c start \"\" \"${url}time_in_${ville}.php\"
>> }
>>
PS D:\> get-CurrentTime -ville paris
[/code:1]
merci janel de tout
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 3 mois #8244
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:amélioration d'une fonction basique
Elle est sympa ta nouvelle fonction. A part qu'un \"cmd /c\" c'est déjà pas sympa, mais en plus tu te contentes d'afficher la page web avec l'heure, alors que tu pourrais à peu de frais lire la page et renvoyer l'info directement dans PowerShell !
[code:1]
# Get-CurrentTime.ps1
param ([String]$city = \"paris\"«»)
$url = \"24timezones.com/world_directory/time_in_{0}.php\" -f $city.ToLower()
$ie=new-object -com internetexplorer.application
$ie.navigate($url)
do {} until ($ie.ReadyState -eq 4)
$time = ($ie.document.body.getElementsByTagName('span') | where {$_.id -eq 'currentTime'}).innerHTML
$time -as [DateTime]
[/code:1]
Ca donne :
[code:1]
PS> get-currenttime London
mercredi 8 décembre 2010 11:22:29
PS> ([datetime]::now - (get-currenttime new_york)).hours
6
[/code:1]
[code:1]
# Get-CurrentTime.ps1
param ([String]$city = \"paris\"«»)
$url = \"24timezones.com/world_directory/time_in_{0}.php\" -f $city.ToLower()
$ie=new-object -com internetexplorer.application
$ie.navigate($url)
do {} until ($ie.ReadyState -eq 4)
$time = ($ie.document.body.getElementsByTagName('span') | where {$_.id -eq 'currentTime'}).innerHTML
$time -as [DateTime]
[/code:1]
Ca donne :
[code:1]
PS> get-currenttime London
mercredi 8 décembre 2010 11:22:29
PS> ([datetime]::now - (get-currenttime new_york)).hours
6
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- amélioration d'une fonction basique