<?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>Dwarfsoft [GPA] &#187; Training</title>
	<atom:link href="http://www.dwarfsoft.com/blog/category/training/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dwarfsoft.com/blog</link>
	<description>Great Programming Artistry</description>
	<lastBuildDate>Tue, 06 Sep 2011 11:18:59 +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>Manipulating CSV Files &#8211; Part 1</title>
		<link>http://www.dwarfsoft.com/blog/2008/09/09/manipulating-csv-files-part-1/</link>
		<comments>http://www.dwarfsoft.com/blog/2008/09/09/manipulating-csv-files-part-1/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 04:44:46 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Study]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[MCSA]]></category>
		<category><![CDATA[MCSA Messaging]]></category>
		<category><![CDATA[MCSE]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Workstation]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=67</guid>
		<description><![CDATA[Before I jump in to the fun that is the Scripting that I have been wading through this past week, I thought I&#8217;d let all of those who may care that I finally have some kind of certification. I passed Microsoft exams 70-291 and 70-284. So I am now the proud holder of a Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>Before I jump in to the fun that is the Scripting that I have been wading through this past week, I thought I&#8217;d let all of those who may care that I finally have some kind of certification. I passed Microsoft exams 70-291 and 70-284. So I am now the proud holder of a Microsoft Certified Systems Administrator Messaging Specialist certification (MCSA Messaging). Now I am concentrating on the final three exams so that I can get my MCSE.</p>
<p>After a rather hectic week of scripting a solution and then distributing it under an excessively short deadline, I have been asked to provide stats on the result of forcing this solution out to clients. The solution that I had to develop keeps tabs on a System Volume Image of PCs, and ensures that this Image never gets out of date too far. Currently I am not forcing a Store every restart, as the planned solution was to do, but I do inform the client that their current Image is out of date and ask them if they want to do a Store now. If they click on Yes then their PC is rebooted and the Store is done (providing that one of many flaws in the current Store process do not interrupt the process).<span id="more-67"></span></p>
<p>Because of some of the issues that we have had, as well as Managements want to view the impact of what we have done in a statistical format, I was required to provide a secondary application, which is just an updated version of an AutoIT Script that logs the Image Date into a log file during login. Because this file was preexisting it has been used in this way to gather stats for some time.</p>
<p>The issue is that the log file includes EVERY instance of a login for a PC, and I want only the most recent with the timestamp of the image, not all the other instances, or the log values that are too old (I was unable to clear the logs due to current procedure). Therefore I was required to learn some new things in the VBScript world. This solution is surprisingly fast considering how much data it is required to crunch in order to produce the output CSV file.</p>
<pre>Const ForReading = 1
Const ForWriting = 2

Dim arrLines()
i = 0

Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")

objStartFolder = WScript.ScriptFullNameobjStartFolder = Replace  (objStartFolder, WScript.ScriptName, "") 

Set objFolder = objFSO.GetFolder(objStartFolder &amp; "Logs")

Set colFiles = objFolder.Files
For Each objFile in colFiles
    Set textFile = objFSO.OpenTextFile(objFile.Path, ForReading)

    Do Until textFile.AtEndOfStream
        Redim Preserve arrLines(i)
        arrLines(i) = textFile.ReadLine
        i = i + 1
    Loop

    For i = Ubound(arrLines) to LBound(arrLines) Step -1
        splt = Split (arrLines(i),",")

        If (UBound(splt) &lt; 19) Then
            i = LBound(arrLines)
        Else
            If Splt(19) &lt;&gt; "" Then
               If Not objDictionary.Exists(splt(1)) Then
                  objDictionary.Add splt(1),splt(19)
               End If
            End If
        End If
    Next

    ReDim arrLines(0)
    i = 0
    textFile.Close
Next

Set writeFile = objFSO.CreateTextFile(objStartFolder &amp; "Stores.csv")
For Each strKey in objDictionary.Keys
   writeFile.WriteLine strKey &amp; "," &amp; objDictionary.Item(strKey)
Next
writeFile.Close</pre>
<p>In this particular script the splt Array has 20 columns (or 19 for those items that were prior to me updating the script). Column 2 (or splt(1)) is the PC Name, and Column 20 (or splt(19)) is the Timestamp of the Image. This script reads through every file in the Logs folder (in the same path as the script) and reads the file in reverse until it comes across the entries with only 19 columns. For every unique PC Name that it finds it adds this into a Dictionary object with the Timestamp as the value. The Dictionary is then written to the new CSV file one at a time.</p>
<p>In order to get the stats on how effective this has been, I paste a couple of Excel Macros:</p>
<pre>=COUNTIF(B:B,"&gt;22/08/2008")
=COUNT(B:B)</pre>
<p>The magic date here is the 22nd of August 2008. This was chosen purely because it was a recent date, and it was newer than most of the Images for the PCs within the IT Department, who already had the AutoStore scripts working on their machines. Which provided for a controlled Environment for testing some of the modifications I was forced to make last minute.</p>
<p>One thing that I could do to improve the accuracy of this script is to pull out all the Workstation Names from Novell using LDAP and get a total overall status of where the Store dates are across all PCs, but that would pollute the pool with a large number of machines that have been decommissioned (they still appear as a Workstation in Novell until they have not been logged on to for 3 months, then they fall off the system).</p>
<p>On a side note, I have to pull in the Logs into the Logs directory in some way, which is achieved for me by running a Batch file which I have written as follows:</p>
<pre>@ECHO OFF
ECHO Pulling Logs %DATE% - %TIME%&gt;&gt;Log.txt
ECHO.&gt;&gt;Log.txt
%~d0
cd %~dp0
FOR /F "tokens=*" %%A IN (Sources.txt) DO (
  FOR /F "tokens=1 delims=" %%Z IN ("%%A") DO (
     COPY "%%AlogsLogIn.csv" "%~dp0Logs%%Z.csv" /A /D /Y /Z &gt;&gt;Log.txt
  )
)
ECHO.&gt;&gt;Log.txt
ECHO Current Stores being Rebuilt at %DATE - %TIME%&gt;&gt;Log.txt
WScript Stores.vbs
Start Excel Stores.csv
ECHO Log Pull Finished at %DATE% - %TIME%&gt;&gt;Log.txt</pre>
<p>This script uses a file called &#8220;Sources.txt&#8221; which is a list of paths on newlines which point to where each of the Logs are stored. Each line consists of something like \ServerNameSYSPUBLIC. The line FOR /F &#8220;tokens=1 delims=&#8221; %%Z IN (&#8220;%%A&#8221;) allows me to pull out the servername from each line in the file, so that when I copy the file from the server, I can rename it so that its source can be identified.</p>
<p>I think this will conclude todays lesson in VBScript and Batch, and I&#8217;d best get back to studying.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2008/09/09/manipulating-csv-files-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Return to GetVolumeNumber</title>
		<link>http://www.dwarfsoft.com/blog/2008/09/02/return-to-getvolumenumber/</link>
		<comments>http://www.dwarfsoft.com/blog/2008/09/02/return-to-getvolumenumber/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 13:30:47 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Study]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Auto Store]]></category>
		<category><![CDATA[AutoStore]]></category>
		<category><![CDATA[Mount]]></category>
		<category><![CDATA[Mount Points]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[Volume]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=62</guid>
		<description><![CDATA[Since my last post I came to the realisation that I really didn&#8217;t like the way that the Diskpart box popped up on screen during the function call, so I did what I said I should have done and created the function the other way. This also cleans up the text files after completion, which [...]]]></description>
			<content:encoded><![CDATA[<p>Since my last post I came to the realisation that I really didn&#8217;t like the way that the Diskpart box popped up on screen during the function call, so I did what I said I should have done and created the function the other way. This also cleans up the text files after completion, which is something the previous function didn&#8217;t do.</p>
<p>For completeness I also made the function a little more generic, so it takes the Volume Label as the Variable, and falls back to &#8220;IMAGE&#8221; if none was passed.</p>
<p><span id="more-62"></span></p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Function</span> GetVolumeNumberHidden<span style="color: #000000;">&#40;</span>Label<span style="color: #000000;">&#41;</span>
   <span style="color: #FF8000;">On</span> <span style="color: #FF8000;">Error</span> <span style="color: #FF8000;">Resume</span> <span style="color: #FF8000;">Next</span>
   <span style="color: #0600FF;">Const</span> <span style="color: #0600FF;">ForWriting</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span>
   <span style="color: #0600FF;">Const</span> <span style="color: #0600FF;">ForReading</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>
&nbsp;
   <span style="color: #0600FF;">If</span> Label<span style="color: #008000;">=</span><span style="color: #808080;">&quot;&quot;</span> <span style="color: #FF8000;">Then</span>
      Label<span style="color: #008000;">=</span><span style="color: #808080;">&quot;IMAGE&quot;</span>
   <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
   <span style="color: #FF8000;">Set</span> oShell <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;WScript.Shell&quot;</span><span style="color: #000000;">&#41;</span>
&nbsp;
   <span style="color: #FF8000;">Set</span> oFSO <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #000000;">&#41;</span>
   TempFile <span style="color: #008000;">=</span> oShell.<span style="color: #0000FF;">ExpandEnvironmentStrings</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;C:\Temp\dp.txt&quot;</span><span style="color: #000000;">&#41;</span>
   ListFile <span style="color: #008000;">=</span> oShell.<span style="color: #0000FF;">ExpandEnvironmentStrings</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;C:\Temp\dl.txt&quot;</span><span style="color: #000000;">&#41;</span>
   <span style="color: #FF8000;">Set</span> oFile <span style="color: #008000;">=</span> oFSO.<span style="color: #0000FF;">OpenTextFile</span><span style="color: #000000;">&#40;</span>TempFile,<span style="color: #0600FF;">ForWriting</span>,<span style="color: #0600FF;">True</span><span style="color: #000000;">&#41;</span>
&nbsp;
   oFile.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;LIST VOLUME&quot;</span><span style="color: #000000;">&#41;</span>
   oFile.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
   oShell.<span style="color: #0000FF;">Run</span> <span style="color: #808080;">&quot;%comspec% /c diskpart /s &quot;</span> <span style="color: #008000;">&amp;</span>amp; TempFile <span style="color: #008000;">&amp;</span>amp; _
      <span style="color: #808080;">&quot; &amp;gt; &quot;</span> <span style="color: #008000;">&amp;</span>amp; ListFile, <span style="color: #FF0000;">0</span>, <span style="color: #0600FF;">True</span>
&nbsp;
   Ouptut <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;&quot;</span>
   <span style="color: #0600FF;">Str</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;&quot;</span>
&nbsp;
   <span style="color: #FF8000;">Set</span> oFile <span style="color: #008000;">=</span> oFSO.<span style="color: #0000FF;">OpenTextFile</span><span style="color: #000000;">&#40;</span>ListFile,<span style="color: #0600FF;">ForReading</span><span style="color: #000000;">&#41;</span>
&nbsp;
   <span style="color: #0600FF;">Do</span> until oFile.<span style="color: #0000FF;">AtEndOfStream</span>
      <span style="color: #0600FF;">Str</span> <span style="color: #008000;">=</span> oFile.<span style="color: #0000FF;">ReadLine</span>
      <span style="color: #0600FF;">If</span> <span style="color: #0600FF;">InStr</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Str</span>,<span style="color: #808080;">&quot;Volume&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
         <span style="color: #0600FF;">If</span> <span style="color: #804040;">Not</span> <span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Str</span>,<span style="color: #FF0000;">10</span>,<span style="color: #FF0000;">3</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">=</span> <span style="color: #808080;">&quot;###&quot;</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
            DriveLetter <span style="color: #008000;">=</span> <span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Str</span>,<span style="color: #FF0000;">16</span>,<span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
            VolumeNumber <span style="color: #008000;">=</span> <span style="color: #0600FF;">Trim</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Str</span>,<span style="color: #FF0000;">10</span>,<span style="color: #FF0000;">3</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
            <span style="color: #0600FF;">If</span> <span style="color: #0600FF;">StrComp</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Trim</span><span style="color: #000000;">&#40;</span><span style="color: #FF8000;">Mid</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">Str</span>,<span style="color: #FF0000;">20</span>,<span style="color: #FF0000;">12</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>,<span style="color: #0600FF;">Trim</span><span style="color: #000000;">&#40;</span>Label<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">=</span><span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
               GetVolumeNumberHidden <span style="color: #008000;">=</span> VolumeNumber
&nbsp;
               oFile.<span style="color: #0600FF;">Close</span>
               <span style="color: #0600FF;">If</span> oFSO.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>TempFile<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
                  oFSO.<span style="color: #0000FF;">DeleteFile</span> TempFile, <span style="color: #0600FF;">True</span>
               <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
               <span style="color: #0600FF;">If</span> oFSO.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>ListFile<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
                  oFSO.<span style="color: #0000FF;">DeleteFile</span> ListFile, <span style="color: #0600FF;">True</span>
               <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
               <span style="color: #0600FF;">Exit</span> <span style="color: #0600FF;">Function</span>
            <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
         <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
      <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
   <span style="color: #0600FF;">Loop</span>
&nbsp;
   oFile.<span style="color: #0600FF;">Close</span>
   <span style="color: #0600FF;">If</span> oFSO.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>TempFile<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
      oFSO.<span style="color: #0000FF;">DeleteFile</span> TempFile, <span style="color: #0600FF;">True</span>
   <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
   <span style="color: #0600FF;">If</span> oFSO.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>ListFile<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
      oFSO.<span style="color: #0000FF;">DeleteFile</span> ListFile, <span style="color: #0600FF;">True</span>
   <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></div></div>

</p>
<p>This function now makes its way into the Completed stage and now I move on to other things. I have been working very frantically on my AutoStore script. This function is used in both the Store/Restore installation, and the AutoStore script itself, in order to get the timestamp of the previously stored image files. Some of the other fun things I have been playing with involve Novell Workstation Policy Packages, and Package Schedules. In order to initiate the AutoStore process I have created an array of Package Schedules that calls my AutoImage.vbe file. I noticed that during the process of Installation, the MSI had not completed before the AutoImage.vbe file was attempted to be run. This lead to a WScript error because the target file did not exist. I modified the run information to the following:</p>

<div class="wp_syntax"><div class="code"><pre class="winbat" style="font-family:monospace;">C:\Windows\System32\cmd.exe /c &quot;if exist (
   C:\SOE\AUTOSTORE\AutoImage.vbe) (
      start wscript C:\SOE\AUTOSTORE\AutoImage.vbe Interval=14 Force )&quot;</pre></div></div>

<p>At first glance it may seem that some of this can be discarded, however it is all required. In order to first check that the file exists without requiring ANY script to have been installed onto the target machine we need to use &#8220;<strong>if exist</strong>&#8221; which requires running through cmd.exe because it is a command interpreter command, not a stand alone executable. If we do not use <strong>Start</strong> then the command screen stays open while the script runs, or while a popup box explaining to users that they need to reboot is displayed. This appears a disjointed visually and lead to me wanting to close all those blank black windows. WScript does not explicitly need to be called, but since I want to specify WScript instead of CScript I have included it for completeness sake.</p>
<p>In order that the command window does not show up for most of the background calls to the script I have ensured that it runs in the SYSTEM security space. The Unsecure System space is used only for those functions where the script requires user input or provides user feedback. This limits the interruption to the general use of the PCs.</p>
<p>I spent much of the past few days creating and modifying the scripts, and I spent all afternoon packaging the script into the MSI and creating the Policy Packages. I have also now documented the Policy Package creation process and documented the usage of the script. Hopefully I can get it all slapped together and rolled out, as we need to force a store before Monday, when an updated software package is being forced out. I have to love the communication we get prior to these things. I have had to kill myself to get the modifications done to their current point, and as yet they are untested for machines which have not received some of the custom modifications we have implemented. All will come to light tomorrow.</p>
<p>Cheers, Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2008/09/02/return-to-getvolumenumber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MCSA Study</title>
		<link>http://www.dwarfsoft.com/blog/2008/08/17/mcsa-study/</link>
		<comments>http://www.dwarfsoft.com/blog/2008/08/17/mcsa-study/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 13:46:48 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[Study]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[70-284]]></category>
		<category><![CDATA[70-290]]></category>
		<category><![CDATA[70-291]]></category>
		<category><![CDATA[CCNA]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[CNA]]></category>
		<category><![CDATA[Cram]]></category>
		<category><![CDATA[Exam]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[MCSA]]></category>
		<category><![CDATA[MCSE]]></category>
		<category><![CDATA[Novell]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=51</guid>
		<description><![CDATA[I haven&#8217;t updated you all for a while, but in that time I have completed Microsoft exam 70-290. This ended up being quite a lot simpler than I had originally anticipated. I am currently studying for two more exams. 70-291, which is Microsoft Windows 2003 Networking, and 70-284, which is Microsoft Exchange Server 2003 configuration. [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t updated you all for a while, but in that time I have completed Microsoft exam 70-290. This ended up being quite a lot simpler than I had originally anticipated. I am currently studying for two more exams. 70-291, which is Microsoft Windows 2003 Networking, and 70-284, which is Microsoft Exchange Server 2003 configuration. I have been attempting the practice exams and reading the MSPress books, and am relatively confident.</p>
<p>I have scheduled both of these exams for the same day, which will make the day a very long one. If I manage to pass both then that will give me MCSA: Messaging Specialist status. I can then focus on the remaining 3 exams to get my full MCSE certification.</p>
<p><span id="more-51"></span></p>
<p>I hope to get around to completing my Novell CNA exam at some point soon as well. Or once I have the MCSE I might concentrate on the Cisco CCNA. This will give me the required certification level in order to work overseas.</p>
<p>There are still 2 weeks until the exams, so time to start cramming as much study as I can in.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2008/08/17/mcsa-study/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AutoStore Script</title>
		<link>http://www.dwarfsoft.com/blog/2008/03/30/autostore-script/</link>
		<comments>http://www.dwarfsoft.com/blog/2008/03/30/autostore-script/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 07:37:23 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Novell]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/2008/03/30/autostore-script/</guid>
		<description><![CDATA[It has been a while since the last update, and that is due to a number of factors: Firstly being Family Reasons, I have been given the ultimatum that I spend far too much time on the Computer and not enough with my Family, which I am attempting to rectify. Secondly being Workload, as I [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a while since the last update, and that is due to a number of factors:</p>
<ul>
<li>Firstly being Family Reasons, I have been given the ultimatum that I spend far too much time on the Computer and not enough with my Family, which I am attempting to rectify.</li>
<li>Secondly being Workload, as I have been putting in a fair bit of effort at work, and have been exhausted when returning home.</li>
<li>Study has required a fair bit of time as well, as I am attempting to finish off some of those exams I have neglected for far too long</li>
<li>Job Applications has taken up time outside of work, as I am busy attempting to better my circumstances due to some positions opening up at my current employer. I have had to cobble together an Application, and am now attempting to get things together for potential interviews.</li>
<li>Projects and ideas have been coming more frequently of late, as it starts to hit that time of the year (Autumn for me) where I get inspiration and motivation to complete things, so I have been documenting some of these ideas and inspirations and will be endeavoring to get some project work done soon.</li>
</ul>
<p>So at work I have been involved in a few Scripting Enterprises. The most recent being the AutoStore script. This script effectively checks the age of a Stored Image on the computer, and makes a decision on whether to Store a new Image to replace it. The Image in question is a PowerQuest (yeah, I know that Symantec bought them, and its old tech, but for some reason we are still using it. I hear rumours of Ghost being on the Horizon though) .<span id="more-28"></span></p>
<p>This script is nothing special, it calls diskpart to mount the hidden volume, then checks some file timestamps,  makes a decision on whether the interval between the modified timestamp and the current date is too much (based on a Command Line Parameter), and initiates a Store using a Virtual Floppy Disk.</p>
<p>The reason why this is such an interesting aspect of work is that it has been three years coming. It took three years before somebody noticed that this could be achieved to reduce our overal response time to solving issues. Not only that, but it took all of 5 minutes to get an initial prototype working using just simple cmd.exe commands. This was a political nightmare for the person who neglected doing this task, and a political goldmine for me&#8230; Considering we are both applying for the same Position mentioned above.</p>
<p>So, how do you implement something like this on a Novell Directory System? Simple:</p>
<ol>
<li>Create your script that does all the logic. I built it into one script, but it could quite easily have been separated out into three seperate ones. The logic it uses is based on Command Line Parameters to choose what part to do.</li>
<li>Create a NAL that Distributes the Script, this was distributed to the same directory that had the Manual Store Script and Virtual Floppy Disk Images.</li>
<li>Create a Workstation Policy, and then create a Scheduled event to Run the Script on Login to extract the modified timestamp, and image age (in days) from the image file, and insert it into the Registry (this is what the script does).</li>
<li>Create a Scheduled event to run the Script once every Day to update the modified timestamp, and image age (in days) from the image file, and update the registry (this could quite easily just update the age without rechecking the file)</li>
<li>Create a Scheduled event to run the Script on Logoff, where the Image Age is checked against the Interval given on the command-line. If the age is greater than the Interval, then start a new Store.</li>
</ol>
<p>An interesting thing to note in this scripted procedure is that if somebody initiates a shutdown, and a new Store is initiated, the computer actually shuts down and turns off. The next time the computer is turned on, a Store is initiated before Windows Boots, thereby only impacting on the startup time, not the power consumption over the long weekend (for example).</p>
<p>I have also built into the tool a message box that asks a user to reboot if the PC is left turned on for more than some interval (specified on the command line again). This is intended to initiate a reboot of the PC for workstations that are never rebooted (which causes more issues, not just the lack of a current Image).</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2008/03/30/autostore-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actual Project Work</title>
		<link>http://www.dwarfsoft.com/blog/2007/08/25/actual-project-work/</link>
		<comments>http://www.dwarfsoft.com/blog/2007/08/25/actual-project-work/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 13:01:32 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Training]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/2007/08/25/actual-project-work/</guid>
		<description><![CDATA[I am set to move into the new project management role that has been left for me by a colleague who is going on holidays. The project will be managing the replacement of Server Hard Drives across the South of the State in order to upgrade current Network Storage capacity for all the Servers within [...]]]></description>
			<content:encoded><![CDATA[<p>I am set to move into the new project management role that has been left for me by a colleague who is going on holidays. The project will be managing the replacement of Server Hard Drives across the South of the State in order to upgrade current Network Storage capacity for all the Servers within my region.</p>
<p>This position comes with an elevated pay bracket, some guaranteed overtime (most of the swaps will be occurring after 5:30pm, and therefore will require me to be working overtime in order to complete the tasks). This means that I am now moving back from District to Information Division, and finally getting back into Technical Matters, albeit as a Manager rather than a Tech. Once the project is complete, I fear moving back into my old Technology Officer position, as this will severely hit my income.</p>
<p>While talking to my Boss on a ride home I have heard that there may be some more positions opening up at my current pay level (the level before I go to the Project) which will suit my needs a little more comfortably. Hopefully after all this is done I will have finished my Study, and be working on some more Certifications, potentially my CCNA and my other MCSA/MCSE exams.</p>
<p><span id="more-21"></span></p>
<p>Either way, once my Study is put to rest I should have some time to concentrate on Certifications or time to put into Projects such as NGDN or my Consultancy Business. My experience in so many varied areas of IT give me quite some scope to play with for potential business opportunities. By the time I have enough free time to submit to a business I should have all the necessary Certifications as well as experience in the Field to Consult on Networks, Servers, Directory Service Options, and similar.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2007/08/25/actual-project-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Away on Training</title>
		<link>http://www.dwarfsoft.com/blog/2007/05/07/away-on-training/</link>
		<comments>http://www.dwarfsoft.com/blog/2007/05/07/away-on-training/#comments</comments>
		<pubDate>Mon, 07 May 2007 11:39:32 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=10</guid>
		<description><![CDATA[Tomorrow morning I head to Brisbane for a training course on GroupWise 7. Now, I have come from a background of installing Windows 2003 Servers and Microsoft Exchange On top of them, and always dealing with Microsoft Office and Outlook. GroupWise 7 seems to be surprisingly headed for a similar UI design to Microsoft Outlook [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow morning I head to Brisbane for a training course on GroupWise 7. Now, I have come from a background of installing Windows 2003 Servers and Microsoft Exchange On top of them, and always dealing with Microsoft Office and Outlook. GroupWise 7 seems to be surprisingly headed for a similar UI design to Microsoft Outlook from what I have seen. Furthermore, the WebAccess for GroupWise 7 seems to so closely resemble Outlook Web Acces.</p>
<p>Hopefully this bodes well for me in that I have had experience with Exchange servers, OWA and Outlook quite extensively and my recent GroupWise training work should have prepared me for most places this is likely to go. Either way, I have downloaded the GroupWise 7 manual and web access manual, and am perusing it&#8230; I just hope this isn&#8217;t information overload for me over the next couple of days.</p>
<p><span id="more-10"></span></p>
<p>On a lighter note, I am planning on catching up with a friend while I am in Brisbane so I hope to have a good night out with him.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2007/05/07/away-on-training/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

