Question Get-wmiobject + try catch

Plus d'informations
il y a 10 ans 3 semaines #17212 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,

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 3 semaines #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]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 2 semaines #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]

d'autres solutions sont donné sur le site :
$ErrorActionPreference = \"Stop\"; #Make all errors terminating

ou

-ErrorAction Stop sur le get-wmiobject


a toi de voir ta solution

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 2 semaines #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.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 2 semaines #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 :)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.072 secondes
Propulsé par Kunena