<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT Log &#187; vbscript</title>
	<atom:link href="http://itlog.cz/rubriky/vbscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://itlog.cz</link>
	<description>Information Technology</description>
	<lastBuildDate>Sat, 19 May 2012 17:24:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>VBScript: e-mail s kódováním utf-8</title>
		<link>http://itlog.cz/2011/06/15/vbscript-e-mail-s-kodovanim-utf-8/</link>
		<comments>http://itlog.cz/2011/06/15/vbscript-e-mail-s-kodovanim-utf-8/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 12:58:24 +0000</pubDate>
		<dc:creator>Stanislav Jermář</dc:creator>
				<category><![CDATA[admin]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://itlog.cz/?p=563</guid>
		<description><![CDATA[CDOsys.dll lze použít ve skriptech VBS k posílání zpráv prostřednictvím připojení k SMTP serveru. Ve skriptu lze zadat konfiguraci zprávy, hlavičku, formát (text, html) nebo i zakomponovat jako přílohu libovolný soubor. Ve výchozím nastavení používá tato metoda kódování Latin 1 (ISO-8859-1) a české znaky jsou tedy komoleny. Ověřil jsem následující konfiguraci, která správně zachová česká [...]]]></description>
			<content:encoded><![CDATA[<p>CDOsys.dll lze použít ve skriptech VBS k posílání zpráv prostřednictvím připojení k SMTP serveru. Ve skriptu lze zadat konfiguraci zprávy, hlavičku, formát (text, html) nebo i zakomponovat jako přílohu libovolný soubor. Ve výchozím nastavení používá tato metoda kódování Latin 1 (ISO-8859-1) a české znaky jsou tedy komoleny. Ověřil jsem následující konfiguraci, která správně zachová česká písmenka:</p>
<blockquote><p><code>Set Msg = Createobject("CDO.Message")<br />
Msg.To = "prijemce@mail.net"<br />
Msg.Cc = ""<br />
Msg.From = "odeslal@mail.net"<br />
Msg.Subject = "nova zprava"<br />
Msg.Textbody = "text zprávy" + vbCrLf + "další řádky zprávy"<br />
Msg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2<br />
Msg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTPserver.domain.cz"<br />
Msg.BodyPart.Charset = "UTF-8"<br />
Msg.Configuration.Fields.Update<br />
Msg.Send<br />
Set Msg = Nothing</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://itlog.cz/2011/06/15/vbscript-e-mail-s-kodovanim-utf-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACS: list connected forwarders (VBScript)</title>
		<link>http://itlog.cz/2011/06/02/acs-list-connected-forwarders-vbscript/</link>
		<comments>http://itlog.cz/2011/06/02/acs-list-connected-forwarders-vbscript/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 06:08:48 +0000</pubDate>
		<dc:creator>Stanislav Jermář</dc:creator>
				<category><![CDATA[ACS]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[SCOM 2007]]></category>
		<category><![CDATA[vbscript]]></category>
		<category><![CDATA[acs]]></category>

		<guid isPermaLink="false">http://itlog.cz/?p=471</guid>
		<description><![CDATA[Klientská část (agent) systému Operations Manager se skládá ze dvou neoddělitelných komponent, agent + acs forwarder. Druhá komponenta není ve výchozím stavu po instalaci agenta aktivována, tento krok musí zařídit správce systému. Data jsou odesílána na server (role ACS Collector), který si zároveň řídí agenty &#8211; to například znamená, pokud nestíhá kolektor zpracovávat přijímaná data, dočasně [...]]]></description>
			<content:encoded><![CDATA[<p>Klientská část (agent) systému Operations Manager se skládá ze dvou neoddělitelných komponent, agent + acs forwarder. Druhá komponenta není ve výchozím stavu po instalaci agenta aktivována, tento krok musí zařídit správce systému.</p>
<p>Data jsou odesílána na server (role ACS Collector), který si zároveň řídí agenty &#8211; to například znamená, pokud nestíhá kolektor zpracovávat přijímaná data, dočasně začne pozastavovat příjem od některých agentů. Jakmile nápor pomine, agenty opět připojí a data postupně přijme a zpracuje. Agenty lze seskupit a pro jednotlivé skupiny stanovit různé priority, čímž zajistíme &#8222;přednostní&#8220; zpracování záznamů třeba ze skupiny <em>Domain Controllers</em> (servery z této skupiny budou odpojeny ve výjimečných případech, jako poslední).</p>
<p>SCOM samotný informuje pouze o funkci (zdraví) forwarderu, nikoliv o aktivním připojení. K tomu musíme použít nástroj příkazové řádky <strong>AdtAdmin</strong> s parametrem <strong>/Stats</strong>. Výstup můžeme přesměrovat do souboru (stats.csv) a přehledně zobrazit v tabulce (MS Excel). Soubor nám vedle statistik pro jednotlivé servery také poskytuje informaci o aktivním připojení agenta (spojení forwarder &#8211; collector).</p>
<p>Následující skript VBS a příkazovou dávku CMD můžeme na management serveru ACS kolektoru použít jako Task nebo volat nezávisle, bez konzoly Operations Manager.<br />
CMD</p>
<blockquote><p><code>@echo off<br />
echo.<br />
echo WRITING ACTUAL STATUS (TXT FILE)<br />
c:\windows\system32\security\adtserver\adtadmin -stats &gt; Actual_Status.txt<br />
cscript PARSER_STATS.VBS<br />
echo.<br />
echo CONNECTED FORWARDERS ARE:<br />
type Connected_Forwarders.txt<br />
echo -----------------------------------------------------<br />
echo DISCONNECTED FORWARDERS ARE:<br />
type disConnected_Forwarders.txt<br />
echo -----------------------------------------------------<br />
</code></p></blockquote>
<p>VBS &#8211; skript přehledně (lidsky čitelně) vypíše statistiku pro jednotlivé servery a nakonec dva seznamy podle stavu Připojen / Nepřipojen</p>
<blockquote><p><code>Const ForReading = 1, ForWriting = 2, ForAppending = 8<br />
Set objFSO = CreateObject("Scripting.FileSystemObject")<br />
Set objTxtFR = objFSO.OpenTextFile("Actual_Status.TXT", ForReading)<br />
Set objTxtFW = objFSO.OpenTextFile("Connected_forwarders.TXT", ForWriting, True)<br />
Set objTxtFWnot = objFSO.OpenTextFile("disConnected_forwarders.TXT", ForWriting, True)<br />
'<br />
' first line is Header<br />
arrRecord = objTxtFR.Readline</code></p>
<p><code> </code><code>i=1<br />
Do While objTxtFR.AtEndOfStream &lt;&gt; True<br />
arrRecord = split(objTxtFR.Readline, ",",-1)<br />
wscript.echo " "<br />
wscript.echo "Value: " &amp; arrRecord(0)<br />
wscript.echo "SID: " &amp; arrRecord(1)<br />
wscript.echo "Name: " &amp; arrRecord(2)<br />
wscript.echo "GrupID: " &amp; arrRecord(3)<br />
wscript.echo "Version: " &amp; arrRecord(4)<br />
wscript.echo "Connected: " &amp; arrRecord(5)<br />
wscript.echo "Total Transmitted Events: " &amp; arrRecord(6)<br />
wscript.echo "Total Size of Transmitted Events: " &amp; arrRecord(7)<br />
wscript.echo "Recv Packet Count: " &amp; arrRecord(8)<br />
wscript.echo "Recv Packet Size: " &amp; arrRecord(9)<br />
wscript.echo "Seconds Since Connection: " &amp; arrRecord(10)<br />
wscript.echo "Average Event Rate: " &amp; arrRecord(11)<br />
wscript.echo "Current Event Rate: " &amp; arrRecord(12)<br />
wscript.echo "Average time to collector(in ms): " &amp; arrRecord(13)<br />
wscript.echo "Connect Time: " &amp; arrRecord(14)<br />
wscript.echo "Last Action: " &amp; arrRecord(15)<br />
wscript.echo "Disconnect Time: " &amp; arrRecord(16)<br />
wscript.echo "---------------------------------------------------- " &amp; i<br />
If arrRecord(5) &gt; 0 Then<br />
objTxtFW.WriteLine(arrRecord(2))<br />
Else<br />
objTxtFWnot.WriteLine(arrRecord(2))<br />
End If<br />
i = i + 1<br />
Loop<br />
</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://itlog.cz/2011/06/02/acs-list-connected-forwarders-vbscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Přepočet času UTC na aktuální místní čas CET nebo letní CEST</title>
		<link>http://itlog.cz/2010/08/03/prepocet-casu-utc-na-aktuln-mstn-cas-cet-nebo-letn-cest/</link>
		<comments>http://itlog.cz/2010/08/03/prepocet-casu-utc-na-aktuln-mstn-cas-cet-nebo-letn-cest/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 06:03:00 +0000</pubDate>
		<dc:creator>Stanislav Jermář</dc:creator>
				<category><![CDATA[reporting]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://itlog.cz/?p=19</guid>
		<description><![CDATA[Údaje o čase jsou v databázích SCOMu zapisované ve světovém univerzálním čase UTC, výjimkou je databáze OperationsManagerAC, která může časové údaje zaznamenávat buď ve formátu UTC nebo při instalaci zvolíme místní časové pásmo CET (tj. UTC+1). To je výhodné, pokud jsou v databázi všechny záznamy od serverů z jednoho časového pásma. Druhou výhodou je, že [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://itlog.cz/wp/wp-content/uploads/2010/09/strojek_9204.jpg"><img class="alignleft size-thumbnail wp-image-86" title="strojek_9204" src="http://itlog.cz/wp/wp-content/uploads/2010/09/strojek_9204-150x150.jpg" alt="" hspace="15" width="150" height="150" /></a>Údaje o čase jsou v databázích <em>SCOMu</em> zapisované ve světovém univerzálním čase UTC, výjimkou je databáze <em>OperationsManagerAC</em>, která může časové údaje zaznamenávat buď ve formátu UTC nebo při instalaci zvolíme místní časové pásmo CET (tj. UTC+1). To je výhodné, pokud jsou v databázi všechny záznamy od serverů z jednoho časového pásma. Druhou výhodou je, že se nemusíme starat o změny při přechodu na letní čas a zpět.</p>
<blockquote><p>CET   -&gt;   CEST   -&gt;   CET<br />
nebo (UTC + 1   -&gt;   UTC + 2   -&gt;   UTC + 1)</p></blockquote>
<p>V reportech, které vytvářím pomocí Visual Studia (<strong>SQL Server Bussines Inteligence Development Studio</strong>) můžeme zajistit ve výstupu přepočet časových údajů na aktuální čas našeho pásma CET (central european time, UTC+1) i v době platnosti letního času CEST (central european summer time, UTC+2) použitím kódu Visual Basic. Po zjištění aktuálního času v UTC je skriptem přidána jedna hodina nebo dvě hodiny v době platnosti letního času:<span style="font-size: x-small;"><span class="vbscript1-reservedword"> </span></span></p>
<hr />
<pre>PublicFunction DateTimeUTC2Local(ByVal od As String) As Date 

Dim offset, i As Integer
Dim startDST, endDST As Date
Dim nd As String
offset = 1
' find last Sunday in March
For i = 31 To 25 Step -1
  If Weekday( "3/" &amp; i &amp; "/" &amp; Year(od)) = 1 Then
    startDST = DateAdd("h", 1, CDate("3/" &amp; i &amp; "/" &amp; Year(od)))
    Exit For
  End If
Next
' find last Sunday in October
For i = 31 To 25 Step -1
  If Weekday( "10/" &amp; i &amp; "/" &amp; Year(od)) = 1 Then
    endDST = DateAdd("h", 1, CDate("10/" &amp; i &amp; "/" &amp; Year(od)))
    Exit For
  End If
Next
' add hour to offset if within DST
If CDate(od) &gt;= startDST And CDate(od) &lt; endDST Then
  offset = offset + 1
End If
nd = DateAdd("h", offset, od)
Return nd
End Function</pre>
<hr />
<h3>Použití kódu VBS v nástroji <strong>SQL Server Bussines Inteligence Development Studio</strong>:</h3>
<p>Pokračujeme konfigurací z nabídky <strong>Report</strong> | <strong>Report Properties</strong>. Zde na záložce <strong>General</strong> vyplníme popis reportu (autor, popis). Na záložce <strong>Code</strong> vložíme kód, který použijeme při přepočítávání časového údaje:</p>
<p style="text-align: center;"><a href="http://itlog.cz/wp/wp-content/uploads/2010/09/dateTimeUTC.jpg"><img class="alignnone size-full wp-image-79" title="dateTimeUTC" src="http://itlog.cz/wp/wp-content/uploads/2010/09/dateTimeUTC.jpg" alt="" width="330" height="295" /></a></p>
<p>Pro použití kódu v reportu, v poli které z databáze vybere čas ve formátu UTC, vypočítáme platný místní čas CET / CEST takto:<br />
například čas, získaný dotazem z databáze OperationsManager ve sloupci <strong>Alert.TimeRaised</strong> – ve výstupním formuláři použijeme v příslušném sloupci následující výraz pro výpočet (<em>Expression</em>) s uvedením výše definované funkce:<br />
<strong><span style="background-color: #cccccc;">=Code.DateTimeUTC2Local(Fields!TimeRaised.Value)</span> </strong></p>
<h3>
<hr />
<p>ReportBuilder</h3>
<p>Potřebujeme-li podobnou funkčnost reportu zajistit také z editačního prostředí nástroje <strong>ReportBuilder</strong>, nemůžeme použít vlastní kód (alespoň mi to není známo – použití ReportBuilderu verze 2.0 a 3.0 jsem ještě nezkoumal).</p>
<p style="text-align: center;"><a href="http://itlog.cz/wp/wp-content/uploads/2010/09/dateTimeUTC2.jpg"><img class="alignnone size-full wp-image-80" title="dateTimeUTC2" src="http://itlog.cz/wp/wp-content/uploads/2010/09/dateTimeUTC2.jpg" alt="" width="540" height="440" /></a></p>
<p>Kód musíme napsat přímo do formátovacího pole, implementace výše uvedeného algoritmu by byla příliš složitá, proto postupuji takto:</p>
<ol>
<li>zjistím datum přechodu na letní čas a zpět pro aktuální období pro data v databázi,</li>
<li>v příslušném sloupci při vytváření vzorce pro výpočet uvedu vzorec.<br />
Příklad: vstupní čas (LogonTime) je ve formátu UTC,<br />
přechod z letního času CEST na standardní CET je poslední neděli v říjnu v 1:00 hodin UTC,<br />
přechod na letní času CEST ze standardního CET je poslední neděli v březnu ve 3:00 hodin UTC, definice výrazu je tedy pro současné období:<span style="font-size: x-small;"><span class="vbscript1-reservedword"> </span></span></li>
</ol>
<p><span style="font-size: x-small;"><span class="vbscript1-reservedword"> </span></span><span class="vbscript1-reservedword"> </span></p>
<hr />
<pre>IF(LogonTime &lt; DATETIME(2010;10;31;1;0;0);
   DATEADD(HOUR;2;LogonTime); //přidat 2 hodiny, letní čas CEST
   IF(LogonTime &lt; DATETIME(2011;3;27;1;0;0);
      DATEADD(HOUR;1;LogonTime); //přidat 1 hodiny, standardní čas CET
      DATEADD(HOUR;2;LogonTime) //přidat 2 hodiny, letní čas CEST
   )
)</pre>
<hr />
<p><a href="http://itlog.cz/img/PepoetasuUTCnaaktulnmstnasCETneboletnCES_10A77/dateTimeUTC2.jpg"><br />
</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://itlog.cz/2010/08/03/prepocet-casu-utc-na-aktuln-mstn-cas-cet-nebo-letn-cest/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

