Question
Temps d'exécution de Get-WmiObject
- Bredin Samuel
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 52
- Remerciements reçus 0
il y a 17 ans 1 mois #3818
par Bredin Samuel
Temps d'exécution de Get-WmiObject a été créé par Bredin Samuel
Bonjour,
Je voudrais faire une fonction permettant de savoir la dernière date de reboot d'un serveur distant.
[code:1]Function Get-UptimeServer ([string]$serveur) {
$ErrorActionPreference = 'stop'
$os = Get-WmiObject -class Win32_OperatingSystem -ComputerName $serveur -Property LastBootUpTime | Select-Object LastBootUpTime
$uptime = $os.LastBootUpTime
$uptime = New-Object System.DateTime($($uptime.substring(0,4)),$($uptime.substring(4,2)),$($uptime.substring(6,2)),$($uptime.substring(8,2)),$($uptime.substring(10,2)),$($uptime.substring(12,2)))
Return $uptime
}[/code:1]
Mon problème est dans le temps de traitement qui n'est pas limité. J'ai un parc de 1500 serveurs a collecter. J'ai déjà eu le cas de 2 jours pour collecter l'information pour une seule machine.
Auriez-vous une méthode pour limiter le traitement de cette fonction ?
Créer un tread asynchrone ?
Je voudrais faire une fonction permettant de savoir la dernière date de reboot d'un serveur distant.
[code:1]Function Get-UptimeServer ([string]$serveur) {
$ErrorActionPreference = 'stop'
$os = Get-WmiObject -class Win32_OperatingSystem -ComputerName $serveur -Property LastBootUpTime | Select-Object LastBootUpTime
$uptime = $os.LastBootUpTime
$uptime = New-Object System.DateTime($($uptime.substring(0,4)),$($uptime.substring(4,2)),$($uptime.substring(6,2)),$($uptime.substring(8,2)),$($uptime.substring(10,2)),$($uptime.substring(12,2)))
Return $uptime
}[/code:1]
Mon problème est dans le temps de traitement qui n'est pas limité. J'ai un parc de 1500 serveurs a collecter. J'ai déjà eu le cas de 2 jours pour collecter l'information pour une seule machine.
Auriez-vous une méthode pour limiter le traitement de cette fonction ?
Créer un tread asynchrone ?
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 17 ans 1 mois #3821
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Temps d'exécution de Get-WmiObject
Peux-tu reformuler le pb ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 17 ans 1 mois #3822
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Temps d'exécution de Get-WmiObject
Salut Mephisto,
L'execution d'un thread asynchrone n'améliorera pas à mon sens les performances de ton script. Ceci étant, je sais pas comment le faire en v1. Avec PowerShell v2 tu devrais pouvoir envoyer un job distant asynchrone. Mais tu le sais la v2 est encore en CTP...
2 jours pour obtenir la réponse d'un serveur ça me paraît anormalement long. Peut-être devrais-tu essayer de pinguer le serveur avant de lui envoyer la requete.
Peut-être s'agit-il aussi d'un problème de timeout ?
Arnaud
PS : Merci pour ton script. Je vais le mettre dans la bibliothèque
L'execution d'un thread asynchrone n'améliorera pas à mon sens les performances de ton script. Ceci étant, je sais pas comment le faire en v1. Avec PowerShell v2 tu devrais pouvoir envoyer un job distant asynchrone. Mais tu le sais la v2 est encore en CTP...
2 jours pour obtenir la réponse d'un serveur ça me paraît anormalement long. Peut-être devrais-tu essayer de pinguer le serveur avant de lui envoyer la requete.
Peut-être s'agit-il aussi d'un problème de timeout ?
Arnaud
PS : Merci pour ton script. Je vais le mettre dans la bibliothèque
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Bredin Samuel
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 52
- Remerciements reçus 0
il y a 17 ans 1 mois #3823
par Bredin Samuel
Réponse de Bredin Samuel sur le sujet Re:Temps d'exécution de Get-WmiObject
La commande Get-WmiObject ne génère pas d'erreur en cas de Timeout.
Je voudrais que lorsque j'appelle cette fonction :
- soit qu'elle génère une erreur
- soit qu'elle ne retourne rien pour redonner la main
Merci par avance pour vos suggestions.
Je voudrais que lorsque j'appelle cette fonction :
- soit qu'elle génère une erreur
- soit qu'elle ne retourne rien pour redonner la main
Merci par avance pour vos suggestions.
Connexion ou Créer un compte pour participer à la conversation.
- Bredin Samuel
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 52
- Remerciements reçus 0
il y a 17 ans 1 mois #3824
par Bredin Samuel
Réponse de Bredin Samuel sur le sujet Re:Temps d'exécution de Get-WmiObject
Bonjour Arnaud,
Merci pour l'info.
Pour l'idée de ping avant l'appel, non réalisable.
La machine répond très bien au ping et avec des temps normaux.
Il n'y a que les requetes wmi qui sont anormalement longue.
Petite precision je ne veux pas utiliser la version 2 de Powershell en production (tant qu'elle sera en CTP).
Merci pour l'info.
Pour l'idée de ping avant l'appel, non réalisable.
La machine répond très bien au ping et avec des temps normaux.
Il n'y a que les requetes wmi qui sont anormalement longue.
Petite precision je ne veux pas utiliser la version 2 de Powershell en production (tant qu'elle sera en CTP).
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 17 ans 1 mois #3827
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Temps d'exécution de Get-WmiObject
Mephisto écrit:
Il faudrait vérifier sur les serveurs posant pb si la connection est possible.
Comme la classe ConnectionOptions propose un timeout c'est peut être une piste. Ensuite la connexion peut être acceptée rapidement mais pas ta requête, mais cela t'oblige à coder en .NET.
A vérifier donc. Sinon connais-tu la cause d'un tel temps de traitement ?
Wmi permet les appels asynchrones mais il faut passer via des interfaces et avoir une gestion des événements , malheureusement c'est pas encore possible sous PowerShell
En V1 tu peux créer des jobs en tâche de fond,, recherche sur le forum, mais ton code sera plus complexe.
Voir aussi google avec \"PowerShell WMI timeout\".
[edit]
Voir aussi waitfornextevent <br><br>Message édité par: Laurent Dardenne, à: 26/01/09 16:40
Je comprend mieux.La commande Get-WmiObject ne génère pas d'erreur en cas de Timeout.
Il faudrait vérifier sur les serveurs posant pb si la connection est possible.
Comme la classe ConnectionOptions propose un timeout c'est peut être une piste. Ensuite la connexion peut être acceptée rapidement mais pas ta requête, mais cela t'oblige à coder en .NET.
A vérifier donc. Sinon connais-tu la cause d'un tel temps de traitement ?
Wmi permet les appels asynchrones mais il faut passer via des interfaces et avoir une gestion des événements , malheureusement c'est pas encore possible sous PowerShell
En V1 tu peux créer des jobs en tâche de fond,, recherche sur le forum, mais ton code sera plus complexe.
Voir aussi google avec \"PowerShell WMI timeout\".
[edit]
Voir aussi waitfornextevent <br><br>Message édité par: Laurent Dardenne, à: 26/01/09 16:40
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.097 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Temps d'exécution de Get-WmiObject