|
Iniciado por Axel PICHON, 23,ago. 2021 12:16 - 37 respuestas |
| |
| | | |
|
| |
Miembro registrado 15 mensajes |
|
Publicado el 23,agosto 2021 - 12:16 |
Bonjour,
Je suis familiarisé avec PowerShell comment obtenir un équivalent de la commande Get-WmiObject sous WinDev svp ?
Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 23,agosto 2021 - 14:05 |
hello, voici l'équivalent de :
Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'" en utilisant l'assemblage System.Management dans Windev :
objDisque est un ManagementObject dynamique prop est une PropertyData dynamique MaRechercheWMI est un ManagementObjectSearcher("SELECT * from WIN32_LogicalDisk Where DeviceID = 'C:'") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() Trace("=========================================") POUR TOUT objDisque de ColDisques POUR TOUTE prop de objDisque.Properties SI prop.Value <> Null ALORS Trace(prop.Name, " : ",prop.Value ) FIN Trace("la valeur de la propriété DeviceID est : ",objDisque.Properties.get_Item("DeviceID").Value) FIN
et voici le résultat :
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
Publicado el 23,agosto 2021 - 20:43 |
Merci mais ca me parait compliqué...
Je vais lancé un script Powershell en silencieux afin d'ecrire dans la base de registre les informations dont j'ai besoin et les recuperer dans WinDev |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 874 mensajes Popularité : +39 (51 votes) |
|
Publicado el 23,agosto 2021 - 20:50 |
Bonsoir Axel, L'exemple et code de @Jurassic Pork est simple et opérationnel
Tu peux t'en inspirer
Bon dev Christian
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Publicado el 24,octubre 2021 - 21:12 |
Bonjour.
Avec un copier/coller de votre code, les 4ère lignes sont en rouge. Il me manque quelque chose. une déclaration quelque par. Genre ManagementObject est un objet Automation dynamique Merci pour votre aide. J'apprendrai quelques de plus grâce à vous. ciao |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 25,octubre 2021 - 10:43 |
hello, System.management est un assemblage dotnet --> Atelier/dotnet/ajouter un assemblage
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2021 - 11:02 |
Bonjour.
C'est une partie de Windev que je n'ai jamais utilisée. Le code fonctionne. Je vais m'en inspirer.
Merci |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2021 - 14:18 |
Je suis désolé, je code fonctionne mais je n'y arrive pas avec cette commande de base : Get-WmiObject -query "SELECT * FROM Win32_diskdrive"
Je veux récupérer "Model", "Size" et "DeviceID"
Il me faut plusieurs modèles pour comprendre et adapter les futurs codes avec Get-WmiObject Merci |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2021 - 18:02 |
Le 25/10/2021 à 08:43, Jurassic Pork a écrit :
hello, System.management est un assemblage dotnet --> Atelier/dotnet/ajouter un assemblage
-- Ami calmant, J.P
Bonjour, Je suis intéressé par ce code, mais je ne trouve pas le moyen d'utiliser un assemblage dotnet. Je ne trouve pas le menu Atelier/dotnet/ajouter J'ai essayé Projet/Importer/Un assemblage .net sans succès : j'ai l'erreur "Le chargement de la DLL wd260net4.dll a échoué", code 3690001 J'ai pourtant installé le framework 4.8, le vcredist-x64 (je n'ai pas pû trouver la LIBC 10 dont la doc parle) Merci pour vos conseils |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 25,octubre 2021 - 18:39 |
yannick a écrit :
Je suis désolé, je code fonctionne mais je n'y arrive pas avec cette commande de base : Get-WmiObject -query "SELECT * FROM Win32_diskdrive"
Je veux récupérer "Model", "Size" et "DeviceID"
Il me faut plusieurs modèles pour comprendre et adapter les futurs codes avec Get-WmiObject Merci Exemple pour DeviceID
Trace("la valeur de la propriété DeviceID est : ",objDisque.Properties.get_Item("DeviceID").Value)
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 25,octubre 2021 - 18:42 |
Philippe a écrit :
Le 25/10/2021 à 08:43, Jurassic Pork a écrit : hello, System.management est un assemblage dotnet --> Atelier/dotnet/ajouter un assemblage
-- Ami calmant, J.P
Bonjour, Je suis intéressé par ce code, mais je ne trouve pas le moyen d'utiliser un assemblage dotnet. Je ne trouve pas le menu Atelier/dotnet/ajouter J'ai essayé Projet/Importer/Un assemblage .net sans succès : j'ai l'erreur "Le chargement de la DLL wd260net4.dll a échoué", code 3690001 J'ai pourtant installé le framework 4.8, le vcredist-x64 (je n'ai pas pû trouver la LIBC 10 dont la doc parle) Merci pour vos conseils
c'est normal que tu ne trouves pas Atelier/dotnet/ajouter un assemblage dotnet ----> Cela a bien changé depuis ma version qui est la 16. Désoler mais pour la version 26 je ne peux pas t'aider. |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2021 - 19:39 |
Merci pour votre aide. Mais pouvez-vous réellement tester avec Get-WmiObject -query "SELECT * FROM Win32_diskdrive" ? Je veux récupérer "Model", "Size" et "DeviceID" Votre réponse ne fonctionne pas.
objDisque est un objet ManagementObject dynamique prop est une PropertyData dynamique MaRechercheWMI est un ManagementObjectSearcher("SELECT * FROM Win32_diskdrive") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() Trace("=========================================") POUR TOUT objDisque DE ColDisques POUR TOUTE prop DE objDisque.Properties SI prop.Value <> Null ALORS Trace(prop.Name, " : ",prop.Value ) FIN Trace("la valeur de la propriété DeviceID est : ",objDisque.Properties.get_Item("DeviceID").Value) FIN
Je veux apprendre l'utilisation de WMI dans Windev, il me faut des exemples complets. Merci à vous et pour votre temps. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 26,octubre 2021 - 08:09 |
hello, yannick a écrit :
Merci pour votre aide. Mais pouvez-vous réellement tester avec Get-WmiObject -query "SELECT * FROM Win32_diskdrive" ? Je veux récupérer "Model", "Size" et "DeviceID" Votre réponse ne fonctionne pas.
hello, j'ai vu pourquoi le code plantait avec Win32_diskdrive. Il y a certaines propriétés lues qui sont des tableaux et windev n'aime pas trop que l'on fasse un Trace sur un tableau directement. La solution consiste à tester le type de variable renvoyé et si c'est un tableau, balayer le tableau. De plus le plantage était sévère puisqu'il arrêtait l'exécution de l'application. On rajoute un QUAND EXCEPTION pour éviter cela. Voici le nouveau code :
objDisque est un objet ManagementObject dynamique prop est une PropertyData dynamique MaRechercheWMI est un ManagementObjectSearcher("SELECT * FROM Win32_diskdrive") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() Trace("=========================================") QUAND EXCEPTIONEXCEPTION DANS POUR TOUT objDisque de ColDisques POUR TOUTE prop de objDisque.Properties SI prop.Value <> Null ALORS SI TypeVar(prop.Value) = wlTableau ALORS Trace(prop.Name, " : ") POUR TOUT elem de prop.Value Trace(elem) FIN SINON Trace(prop.Name, " : ",prop.Value ) FIN FIN FIN Trace("===============================================================") FIN FAIRE Trace("Erreur WMI : ",ErreurInfo()) FIN
et pour ton cas de figure oû l'on a besoin de récupérer que trois propriétés :
objDisque est un objet ManagementObject dynamique prop est une PropertyData dynamique MaRechercheWMI est un ManagementObjectSearcher("SELECT * FROM Win32_diskdrive") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() QUAND EXCEPTIONEXCEPTION DANS POUR TOUT objDisque de ColDisques prop = objDisque.Properties.get_Item("Model") SI prop.Value <> Null ALORS Trace(prop.Name, " : ",prop.Value ) prop = objDisque.Properties.get_Item("Size") SI prop.Value <> Null ALORS Trace(prop.Name, " : ",prop.Value ) prop = objDisque.Properties.get_Item("DeviceId") SI prop.Value <> Null ALORS Trace(prop.Name, " : ",prop.Value ) Trace("=========================================") FIN FAIRE Trace("Erreur WMI : ",ErreurInfo()) FIN
A noter que pour accélérer la requête au lieu d'aller chercher toutes les propriétés par * on peut ne demander que les propriétés nécessaires. Exemple :
MaRechercheWMI est un ManagementObjectSearcher("SELECT Model, Size, DeviceId FROM Win32_diskdrive")
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 08:20 |
Le 25/10/2021 à 16:42, Jurassic Pork a écrit :
Philippe a écrit : Le 25/10/2021 à 08:43, Jurassic Pork a écrit : hello, System.management est un assemblage dotnet --> Atelier/dotnet/ajouter un assemblage
-- Ami calmant, J.P
Bonjour, Je suis intéressé par ce code, mais je ne trouve pas le moyen d'utiliser un assemblage dotnet. Je ne trouve pas le menu Atelier/dotnet/ajouter J'ai essayé Projet/Importer/Un assemblage .net sans succès : j'ai l'erreur "Le chargement de la DLL wd260net4.dll a échoué", code 3690001 J'ai pourtant installé le framework 4.8, le vcredist-x64 (je n'ai pas pû trouver la LIBC 10 dont la doc parle) Merci pour vos conseils
c'est normal que tu ne trouves pas Atelier/dotnet/ajouter un assemblage dotnet ----> Cela a bien changé depuis ma version qui est la 16. Désoler mais pour la version 26 je ne peux pas t'aider.
Merci quand même !! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 26,octubre 2021 - 09:10 |
hello, Philippe a écrit : > l'erreur "Le chargement de la DLL wd260net4.dll a échoué", code 3690001 j'ai téléchargé le framework windev 26 et avec l'outil depencywalker j'ai regardé les dépendances de la dll wd260net4.dll. En particulier il y a MSVCR100.dll MSVCR100.dll = Visual C++ 2010 Runtime
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 26,octubre 2021 - 09:16 |
complément : *j'ai téléchargé le framework windev 26 et avec l'outil dependencywalker 2 - tu utilises la version 32 bits de wd260net4 il faut télécharger le vc 32 bits
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 16:07 |
Le 26/10/2021 à 07:16, Jurassic Pork a écrit :
complément : *j'ai téléchargé le framework windev 26 et avec l'outil dependencywalker 2 - tu utilises la version 32 bits de wd260net4 il faut télécharger le vc 32 bits
-- Ami calmant, J.P
Ca fonctionne beaucoup mieux .
Mais j'ai une erreur " 'get_Item' est inconnu pour cet élément. " sur la ligne : Trace("la valeur de la propriété DeviceID est:",objDisque.Properties.get_Item("DeviceID").Value)
System.Management Version=4.0.0.0 Culture=neutral PublicKeyToken=b03f5f7f11d50a3a
Encore merci. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 26,octubre 2021 - 17:00 |
Philippe a écrit :
Ca fonctionne beaucoup mieux .
Mais j'ai une erreur " 'get_Item' est inconnu pour cet élément. " sur la ligne : Trace("la valeur de la propriété DeviceID est:",objDisque.Properties.get_Item("DeviceID").Value)
avec mon code ? si oui quel est ton O.S ? si non peux-tu montrer ton code ?
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 17:40 |
Le 26/10/2021 à 15:00, Jurassic Pork a écrit :
Philippe a écrit : Ca fonctionne beaucoup mieux .
Mais j'ai une erreur " 'get_Item' est inconnu pour cet élément. " sur la ligne : Trace("la valeur de la propriété DeviceID est:",objDisque.Properties.get_Item("DeviceID").Value)
avec mon code ? si oui quel est ton O.S ? si non peux-tu montrer ton code ? -- Ami calmant, J.P
Oui avec ton code, copié/collé sans modif ; tout est ok, sauf "get_item". OS Win 10 pro.
J'ai importé le system.management depuis le répertoire : C:\Windows\WinSxS\amd64_system.management_b03f5f7f11d50a3a_4.0.15805.0_none_7a3afbf1f7955d9b\System.Management.dll |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 26,octubre 2021 - 17:59 |
lequel de code ? et avec le premier code du message #13 que se passe-t-il ?
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 18:03 |
Le 26/10/2021 à 15:59, Jurassic Pork a écrit :
lequel de code ? et avec le premier code du message #13 que se passe-t-il ?
-- Ami calmant, J.P
J'avais fait l'essai aussi : problème identique "get_item" non reconnu ! |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 18:07 |
Le 26/10/2021 à 15:59, Jurassic Pork a écrit :
lequel de code ? et avec le premier code du message #13 que se passe-t-il ?
-- Ami calmant, J.P
oupos désolé, je n'avais pas testé le 1er code. Et, en effet, ce 1er code fonctionne parfaitement |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 18:15 |
Le 26/10/2021 à 15:59, Jurassic Pork a écrit :
lequel de code ? et avec le premier code du message #13 que se passe-t-il ?
-- Ami calmant, J.P
Précision: l'erreur "'get_item' est inconnu pour cet élément" est un erreur à la compilation (et non pas en exécution). |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2021 - 18:44 |
Le 26/10/2021 à 15:59, Jurassic Pork a écrit :
lequel de code ? et avec le premier code du message #13 que se passe-t-il ?
-- Ami calmant, J.P
En remplaçant la ligne incriminée : Trace("la valeur de la propriété DeviceID est : ",objDisque.Properties.get_Item("DeviceID").Value)
par : Trace("la valeur de la propriété DeviceID est : ",objDisque.get_Item("DeviceID"))
tout rentre dans l'ordre et la valeur est bien affichée (j'ai effectué des recherches sur d'autres item - comme "MediaType" - avec succès )
J.P, encore un grand merci pour ce code |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 27,octubre 2021 - 08:12 |
hello, il y a une erreur dans mes différents derniers codes. J'utilise ErreurInfo alors que c'est ExceptionInfo qu'il faut utiliser. De plus j'ai essayé de voir le problème à Philippe concernant get_item et je me suis aperçu que chez moi (se méfier de la version de windev) en mettant un get_item sur objDisque au lieu d'objDisque.Properties j'obtenais directement la valeur de la propriété (en String). Pour éviter de tester la valeur Null , j'utilise pour récupérer la valeur de la propriété un variant, comme cela si c'est Null cela me met un zéro et cela ne fait pas planter le Trace. Voici les différents nouveaux codes : 1 - Code pour balayer l'ensemble d'une classe WMI et afficher les noms et les valeurs des propriétés :
// J.P Octobre 2021 objDisque est un objet ManagementObject dynamique prop est une PropertyData dynamique propname est un Variant MaRechercheWMI est un ManagementObjectSearcher("SELECT * FROM Win32_diskdrive") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() QUAND EXCEPTION DANS POUR TOUT objDisque DE ColDisques POUR TOUTE prop DE objDisque.Properties propname = prop.NAME SI prop.Value <> NULL ALORS SI TypeVar(prop.Value) = wlTableau ALORS Trace(prop.NAME, " : ") POUR TOUT elem DE prop.Value Trace(" ",elem) FIN SINON Trace(propname, " : ",prop.Value ) FIN SINON Trace(propname) FIN FIN Trace("===============================================================") FIN FAIRE Trace("Erreur WMI : ",ExceptionInfo()) FIN
2 - Code pour récupérer certaines propriétés d'une classe WMI :
// J.P Octobre 2021 objDisque est un objet ManagementObject dynamique prop est un Variant MaRechercheWMI est un ManagementObjectSearcher("SELECT Model, Size, DeviceId FROM Win32_diskdrive") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() Trace("=========================================") QUAND EXCEPTION DANS POUR TOUT objDisque DE ColDisques prop = objDisque.get_Item("Model") Trace("InstallDate ", " : ",prop ) prop = objDisque.get_Item("Size") Trace("Size ", " : ",prop ) prop = objDisque.get_Item("DeviceId") Trace("DeviceId ", " : ",prop ) Trace("=========================================") FIN FAIRE Trace("Erreur WMI : ",ExceptionInfo()) FIN
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 27,octubre 2021 - 15:45 |
PARFAIT ! Merci. Il me reste juste une chose à comprendre. Le code est prévu seulement pour "Get-WmiObject" les objets Wmi. Mais si je veux travailler avec autre chose comme : "Get-CimInstance -ClassName Win32_OperatingSystem | Select CSName, LastBootUpTime"
Je ne pourrai surement pas tout faire avec Windev. Quoique ? Mais, sans vouloir abuser, le profite de votre connaissance pour moi-même apprendre. Merci Yannick |
| |
| |
| | | |
|
| | |
| |
Publicado el 28,octubre 2021 - 17:39 |
Le code donné fonctionne très bien. J'ai compris son usage mais pas pour d'autres Get-xxxxxx. MAIS, il faut .NET 4 soit installé, c'est le cas pour Windows 10 pas de problème. Et aussi Visual C++ 2010 x64 Redistribuable.
Donc deux solutions pour les postes non équipés par avance : - Faire une vérification de la présente de Visual et sinon l'installer. - L'autre solution sera de ne pas utiliser le code donné, mais autre chose qui me donne la même information mais sans tous ces compléments à installer. Par exemple une commande Powershell. Je sais faire et je l'utilise déjà. Mais c'est lourd et parfois Powershell est en panne sur une machine. Je pense donc aux API Windows. Comment trouver la même chose que ce code avec les API ?
objDisque est un objet ManagementObject dynamique prop est un Variant MaRechercheWMI est un ManagementObjectSearcher("SELECT Model, DeviceId FROM Win32_diskdrive") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get() //Trace("=========================================") QUAND EXCEPTION DANS POUR TOUT objDisque DE ColDisques prop = objDisque.get_Item("Model") ExtractModel = prop prop = objDisque.get_Item("DeviceId") ExtractDeviceId = prop ChaineFinale = ChaineFinale + ExtractDeviceId +" - "+ ExtractModel +RC FIN FAIRE //Pour ne pas avoir de plantage en cas d'exception pendant la procédure, utilise ici les méthodes fournies par le .NET Framework FIN
J'aimerai un avis, ou plusieurs avis, sur la question. C'est peut être pas un problème d'utiliser le code ci-dessus car plus simple que les API ? Sachant que je ne m'arrête pas à ces informations à remonter. Je vais en avoir bien plus du code de ce type si je choisi le WMI. Merci |
| |
| |
| | | |
|
| | |
| |
Publicado el 01,noviembre 2021 - 13:03 |
Bonjour. Je sais, je vous ennuis surement. Mais je suis a font dans les WMI avec Windev. J'arrive à faire fonctionner certaines commandes mais pas d'autres. J'aimerai avoir une réponse à ma publication du 28/10/2021 et sur celle-ci aussi.
Comment traduire en Wlangage cette simple commande ? : (winmgmts:\\.\root\default:SystemRestore').enable('C:') Ici pas besoin d'une boucle, il faut seulement exécuter la commande. Mais je n'y arrive pas. Je ne sais . objDisque est un objet ManagementObject dynamique MaRechercheWMI est un ManagementObjectSearcher("root\default","SystemRestore.enable('C:')")//("'(winmgmts:\\.\root\default:SystemRestore').enable('C:')") ColDisques est un ManagementObjectCollection dynamique = MaRechercheWMI.Get()
Merci une nouvelle fois. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes Popularité : +183 (185 votes) |
|
Publicado el 02,noviembre 2021 - 07:41 |
hello, pour utiliser le WMI sous Windev on peut aussi employer l'objet COM WbemScripting.SWbemLocator. Celui-ci est présent dans Windows depuis Windows Vista, Windows server 2008.
Voici un code équivalent à ce qui a été fait dans les messages précédents :
objLocator est un objet automation "WbemScripting.SWbemLocator" objService est un objet automation dynamique Resultats est un objet automation dynamique x est un entier UnRésultat est une chaîne
QUAND EXCEPTIONEXCEPTION DANS objService = objLocator>>ConnectServer(".", "\root\cimv2") objService>>Security_>>ImpersonationLevel = 3 Resultats = objService>>ExecQuery("SELECT Model, Size, DeviceID FROM Win32_diskdrive") POUR x = 0 _A_ Resultats>>Count -1 UnRésultat = Resultats>>ItemIndex(x)>>Properties_>>Item("Model")>>Value SI UnRésultat <> "" ALORS Trace(UnRésultat) UnRésultat = Resultats>>ItemIndex(x)>>Properties_>>Item("Size")>>Value SI UnRésultat <> "" ALORS Trace(UnRésultat) UnRésultat = Resultats>>ItemIndex(x)>>Properties_>>Item("DeviceID")>>Value SI UnRésultat <> "" ALORS Trace(UnRésultat) FIN FAIRE Erreur("Erreur WMI : " + ExceptionInfo()) FIN
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Publicado el 03,noviembre 2021 - 09:00 |
Merci C'est quoi le mieux alors ? Utiliser les objets COM plus ancien au rique peut être d'être retiré par Microsoft prochainement ? (Je ne sais pas c'est une supposition de ma part) Ou WMI en installant Visual C++ .NET 2010 sur les postes si non installé ? (Pour cette solution, j'ai trouvé et .NET 2010 s'install tout seul si nécessaire. Et côté performance, fiabilité, compatibilité ?
Merci |
| |
| |
| | | |
|
| | |
| |
Publicado el 21,noviembre 2021 - 14:42 |
Bonjour J.P
Je n'arrive pas à convertir ceci pour Windev :
"Get-CimInstance -ClassName Win32_OperatingSystem | Select CSName, LastBootUpTime" ou cela :
Get-WmiObject win32_operatingsystem | select @{LABEL=’LastBootUpTime’;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} L'idéal, J.P, serait de me donner la conversion pour les deux codes. Cala m'aidera à peut être comprendre et faire moi-même ensuite. Merci J.P ! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 351 mensajes Popularité : +75 (75 votes) |
|
Publicado el 26,noviembre 2021 - 13:04 |
Bonjour Yannick,
Pourquoi utiliser une usine à gaz alors que 2 lignes très simples te donneront directement le résultat dans un format DateHeure ?
Tick est une Durée = API("KERNEL32","GetTickCount") Uptime est une DateHeure = DateHeureSys() - Tick
Trace( DateVersChaîne(Uptime,"Jjjj J Mmmm AAAA HHhmm:SS") )
-- Bon développement, Patrick [3po.fr] |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 351 mensajes Popularité : +75 (75 votes) |
|
Publicado el 26,noviembre 2021 - 13:10 |
Et si tes machines tournent plus de 49,7 jours ... alors remplace "GetTickCount" par "GetTickCount64". Tu peux l'utiliser tout le temps et corriger le code en :
Tick est une Durée = API("KERNEL32","GetTickCount64") Uptime est une DateHeure = DateHeureSys() - Tick
Trace( DateVersChaîne(Uptime,"Jjjj J Mmmm AAAA HHhmm:SS") )
-- Bon développement, Patrick [3po.fr] |
| |
| |
| | | |
|
| | |
| |
Publicado el 01,diciembre 2021 - 17:04 |
Désolé, je n'ai pas eu l'occasion de venir sur le forum ces derniers jours. Merci pour l'exemple. Et si je veux extraire la date exacte du jour du redémarrage ? ------------------------------- Autre demande : Dans mon programme actuellement, j'utilise beaucoup de Powershell. Cela fonctionne très bien, mais un peu long dans le traitement sans compter que parfois certaines machines (très minoritaires) ne lancent plus les commandes à cause d'un parasite. La solution est de passer par des commandes WMI-Object et l'idéale par des API. Par exemple, j'utilise une commande Powershell pour récupérer l'IP WAN. Cela m'évite des lignes d'écritures et d'analyse du résultat pour récupérer l'IP. Y a-t-il une solution en API ou en WMI ?
Ceci n'est qu'un exemple. J'ai beaucoup de commande Powershell. |
| |
| |
| | | |
|
| | |
| |
Publicado el 01,diciembre 2021 - 17:07 |
Get-WmiObject win32_operatingsystem | select @{LABEL=’LastBootUpTime’;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} Ceci est une commande WMI Ogject qui ne donne la date exacte du dernier redémarrage. Mais je n'arrive pas à l'intégrer dans Windev et peut être qu'il y a plus simple et aussi efficace en faisant autrement. Merci pour votre aide et votre temps. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 351 mensajes Popularité : +75 (75 votes) |
|
Publicado el 02,diciembre 2021 - 17:15 |
Bonjour Yannick,
Tu redemandes exactement la même chose ... la réponse est donc exactement le même code que j'ai posté le 26 novembre 2021 à 13:10.
Pour extraire la date ... c'est déjà dans le code ! C'est à se demander si tu as essayé le code fourni ?
A ta question concernant les API, la réponse est oui, tu peux tout récupérer via les API mais cela peut être parfois assez compliqué et je doute que tu y arrives à la vue de tes interrogations, désolé d'être un peu direct.
Et si tes machines ont un parasite ... donnent leurs un vermifuge !
-- Bon développement, Patrick [3po.fr] |
| |
| |
| | | |
|
| | |
| |
Publicado el 13,marzo 2024 - 18:09 |
Bonjour. Autre sujet mais toujours du WMI.
J'arrive à comprendre le WMI mais ce n'est pas encore évident. Voici mon code :
objLocator est un objet automation "WbemScripting.SWbemLocator" objService est un objet automation dynamique Resultats est un objet automation dynamique x est un entier UnRésultat est une chaîne UnRésultat2 est une chaîne UnRésultat3 est une chaîne
QUAND EXCEPTIONEXCEPTION DANS objService = objLocator>>ConnectServer(".", "root\Microsoft\Windows\Storage\Providers_v2") objService>>Security_>>ImpersonationLevel = 3 Resultats = objService>>ExecQuery("SELECT * FROM MSFT_StorageReliabilityCounter")
POUR x = 0 _À_ Resultats>>Count -1 UnRésultat = Resultats>>ItemIndex(x)>>Properties_>>Item("ReadLatencyMax")>>Value UnRésultat2 = Resultats>>ItemIndex(x)>>Properties_>>Item("ReadErrorsTotal")>>Value UnRésultat3 = Resultats>>ItemIndex(x)>>Properties_>>Item("FlushLatencyMax")>>Value Trace("====================================================") Trace(UnRésultat," ",UnRésultat2," ",UnRésultat3) FIN FAIRE Erreur("Erreur WMI : " + ExceptionInfo()) FIN
Trace(UnRésultat," ",UnRésultat2," ",UnRésultat3) La dernière ligne est la pour confirmé qu'il ne se passe rien. Il n'y a pas d'erreur dans l’exécution. Mais aucune information alors que je devrais avoir : FlushLatencyMax : 49 ReadErrorsTotal : Rien, heureusement. ReadLatencyMax : 3899 J'obtien ces informations avec la commande suivant :
Get-Disk | Get-StorageReliabilityCounter | Select-object -Property "*" Si j'utilise que :
Get-Disk | Get-StorageReliabilityCounter Je n'ai pas toutes les variables. Merci encore pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Publicado el 13,marzo 2024 - 18:14 |
Correction :
objLocator est un objet automation "WbemScripting.SWbemLocator" objService est un objet automation dynamique Resultats est un objet automation dynamique x est un entier UnRésultat est une chaîne UnRésultat2 est une chaîne UnRésultat3 est une chaîne
QUAND EXCEPTIONEXCEPTION DANS objService = objLocator>>ConnectServer(".", "root\Microsoft\Windows\Storage") objService>>Security_>>ImpersonationLevel = 3 Resultats = objService>>ExecQuery("SELECT * FROM MSFT_StorageReliabilityCounter")
POUR x = 0 _À_ Resultats>>Count -1 UnRésultat = Resultats>>ItemIndex(x)>>Properties_>>Item("ReadErrorsTotal")>>Value UnRésultat2 = Resultats>>ItemIndex(x)>>Properties_>>Item("ReadErrorsTotal")>>Value UnRésultat3 = Resultats>>ItemIndex(x)>>Properties_>>Item("FlushLatencyMax")>>Value Trace("====================================================") Trace(UnRésultat," ",UnRésultat2," ",UnRésultat3) FIN FAIRE Erreur("Erreur WMI : " + ExceptionInfo()) FIN
Trace(UnRésultat," ",UnRésultat2," ",UnRésultat3) |
| |
| |
| | | |
|
| | | | |
| | |
|