J’ai récemment accumulé pas mal de problèmes liés aux paramètres régionaux (développeurs, si vous me lisez…). Avoir un OS en anglais ne suffit plus à priori à s’éviter les ennuis! Les nominés sont:
SCOM 2007:
- Dell: dans leur Management Pack, un vbscript (DellStorageDiscovery.vbs) fait un cint avec un « . » codé en dur, ce qui n’est pas le séparateur décimal en Français. Bug remonté, en cours de correction par Dell
- ISA 2006: le Management Pack récupère la date d’installation de la ferme ISA depuis ADAM sous la forme MM/DD/YYYY. Si ISA a été installé après le 12 du mois, cela ne fonctionne pas (blocage à l’insertion de la valeur en base de données SCOM). Bug remonté, en cours de correction par Microsoft
MBSA: Certaines catégories sont reprises en français (depuis un XP FR), et les accents é;à… se transforment en caractèrent XML invalides. Solution: correction manuelle via un éditeur de texte…
Broadcom: problème de date comme évoqué dans un précédent billet
Pour Dell, voici la fonction incriminée (en rouge le problème):
Function CheckVBScriptEngine()
Dim bIsCompatV, var
Const VBSCRIPT_MIN_VERSION = 5.6
var = ScriptEngineMajorVersion & « . » & ScriptEngineMinorVersion
If (CInt(var)) < VBSCRIPT_MIN_VERSION Then
bIsCompatV = False
Else
bIsCompatV = True
End If
If Err <> 0 Then
CheckVBScriptEngine = Err.Number
Else
CheckVBScriptEngine = bIsCompatV
End If
End Function
Ma version :
Function CheckVBScriptEngine()
Dim bIsCompatV, var, sep, WshShell
Set WshShell = WScript.CreateObject(« WScript.Shell »)
sep = WshShell.RegRead(« HKCU\Control Panel\International\sDecimal »)
Const VBSCRIPT_MIN_VERSION = 5.6
var = ScriptEngineMajorVersion & sep & ScriptEngineMinorVersion
If (CInt(var)) < VBSCRIPT_MIN_VERSION Then
bIsCompatV = False
Else
bIsCompatV = True
End If
If Err <> 0 Then
CheckVBScriptEngine = Err.Number
Else
CheckVBScriptEngine = bIsCompatV
End If
End Function
Pour ISA, le workaround temporaire est de créer un compte dédié, se logguer avec, mettre les paramètres régionaux en anglais, et de l’utiliser en tant que Action Account dans SCOM.
Pour le MBSA, l’erreur se présente sous cette forme:
DSI++: Toujours utiliser les fonctions du langage ou Framework afin d’utiliser les paramètres régionaux. Ne pas hésiter à tester vos logiciels avec plusieurs langues s’ils ont une vocation internationnale.