Question
Get-wmiobject + try catch
- Nicolas Lang
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 31
- Remerciements reçus 0
il y a 9 ans 6 mois #17212
par Nicolas Lang
Get-wmiobject + try catch a été créé par Nicolas Lang
Bonjour à tous.
Je sèche un peu sur un souci que je rencontre dans un script pour pouvoir récupérer les numéros de série des écrans rattachés aux postes clients. Le script marche, mais j'ai une partie de gestion d'erreur qui ne fonctionne pas.
Voici le bout de code en question qui me pose des tracas.
[code:1]
try
{
$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name)
}
catch
{
$objet | Add-Member -MemberType NoteProperty -Name \"WMI\" -Value \"ERREUR!!\"
}
[/code:1]
En gros, mon catch n'est jamais pris, malgré la présence d'erreurs de temps à autre.
Cependant, quand je vais voir la variable $Error j'ai bel et bien l'enregistrement de l'erreur, mais même en ajoutant un -errorvariable à la fin de la requete WMI, ma variable reste vide
[code:1]
Get-WmiObject : Classe non valide « wmiMonitorID »
Au caractère \\_ScriptPS\Dev\ecrans.ps1:30 : 18
+ $moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -Computer ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:«») [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
[/code:1]
Aurais-je mal compris quelque chose?
En vous remerciant,
Je sèche un peu sur un souci que je rencontre dans un script pour pouvoir récupérer les numéros de série des écrans rattachés aux postes clients. Le script marche, mais j'ai une partie de gestion d'erreur qui ne fonctionne pas.
Voici le bout de code en question qui me pose des tracas.
[code:1]
try
{
$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name)
}
catch
{
$objet | Add-Member -MemberType NoteProperty -Name \"WMI\" -Value \"ERREUR!!\"
}
[/code:1]
En gros, mon catch n'est jamais pris, malgré la présence d'erreurs de temps à autre.
Cependant, quand je vais voir la variable $Error j'ai bel et bien l'enregistrement de l'erreur, mais même en ajoutant un -errorvariable à la fin de la requete WMI, ma variable reste vide
[code:1]
Get-WmiObject : Classe non valide « wmiMonitorID »
Au caractère \\_ScriptPS\Dev\ecrans.ps1:30 : 18
+ $moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -Computer ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:«») [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
[/code:1]
Aurais-je mal compris quelque chose?
En vous remerciant,
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 9 ans 6 mois #17213
par SiSMik
Réponse de SiSMik sur le sujet Re:Get-wmiobject + try catch
ça marche chez moi ça...
[code:1]try {
$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name)
}
catch {
\"ERREUR!!\"
}[/code:1]
[code:1]try {
$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name)
}
catch {
\"ERREUR!!\"
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 9 ans 6 mois #17223
par Philippe
Réponse de Philippe sur le sujet Re:Get-wmiobject + try catch
salut Darum
une solution trouver ici consiste a passé par la variable $?, exemple :
[code:1]
$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name)
if ($?) {
\"ok\"
}
else {
\"erreur\"
}
[/code:1]
a toi de voir ta solution
une solution trouver ici consiste a passé par la variable $?, exemple :
[code:1]
$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name)
if ($?) {
\"ok\"
}
else {
\"erreur\"
}
[/code:1]
oud'autres solutions sont donné sur le site :
$ErrorActionPreference = \"Stop\"; #Make all errors terminating
-ErrorAction Stop sur le get-wmiobject
a toi de voir ta solution
Connexion ou Créer un compte pour participer à la conversation.
- ANTRI Mohamed
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 124
- Remerciements reçus 0
il y a 9 ans 6 mois #17226
par ANTRI Mohamed
Réponse de ANTRI Mohamed sur le sujet Re:Get-wmiobject + try catch
Pour que le catch soit pris en compte essayez de rajouter [code:1]-erroraction stop[/code:1] [code:1]$moniteurs = Get-WmiObject -Namespace root\wmi -Class wmiMonitorID -ComputerName $($ordinateur.name) -erroraction STOP[/code:1]
Merci.
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Nicolas Lang
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 31
- Remerciements reçus 0
il y a 9 ans 6 mois #17229
par Nicolas Lang
Réponse de Nicolas Lang sur le sujet Re:Get-wmiobject + try catch
Merci à vous pour les infos, je ne savais pas que le try catch n'était que sur les erreurs fatales!
Je teste ça ASAP
Je teste ça ASAP

Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.055 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Get-wmiobject + try catch