Tuesday, September 23, 2008 3:09 PM
StandaJ
Regional Options ve skriptu VBS
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