Při ladění skriptu CAmonitor.vbs pro SCOM 2007 jsem narazil na problémy, kupodivu v celkem základní funkčnosti skriptu. Vzhledem ke způsobu zpracování souborů skriptem VBS - zná pouze textové soubory - je nutno binární hodnoty konvertovat na znaky (string), které lze zapsat do textového souboru metodou Write. V konverzi nebyl žádný problém, ale v okamžiku zápisu znakového řetězce do souboru objCRLFile.Write(strCRL) se u některých znaků běh skriptu zastavil s chybou (Microsoft VBScript runtime error: Invalid procedure call or argument). To je problém, protože musíme mít možnost zapsat všechny binární znaky v rozsahu chr(0) až chr(255).   

----------------------------------------------- konverze
' Convert the binary CRL into a string
debug "Convert the binary CRL into a string ..."
strCRL=""
for j = lbound(binCRL) to ubound(binCRL)
   chrByte = ascb(midb(binCRL,j+1,1))
   strCRL = strCRL & chr(chrByte)
next

----------------------------------------------- zápis

' Write the string crl to a file
err.Clear
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objCRLFile = objFso.CreateTextFile(strCrlPath, True)
' Create the CRL, overwriting if necessary

objCRLFile.Write(strCRL) ' Write he content to the CRL
objCRLFile.Close
-----------------------------------------------

Po kontrole verze knihovny vbscript.dll a její aktualizaci došlo i na hledání rozdílů v operačním systému na serveru, kde se skript choval správně ve srovnání s cílovým systémem, kde skript havaroval. Je to prosté, klíčové nastavení je zřejmě Language for non-Unicode programs - mělo by být ve shodě s nastavením Regional Options - tedy v mém případě Czech
Na serveru Windows Server 2003, English Edition, nastaveno české prostředí a umístění serveru - viz obrázky Regional and Language Options:

     

Díky kolegovi M. za inspiraci, zase jednou zvítězil duch nad hmotou :) 

AKTUALIZACE: viz Změna formátu data pro Action Account (SCOM), 24. 4. 2009

Značky Technorati: ,