Thursday, November 01, 2007

I’m in the market for a new workstation and with the latest release of the 3 series chipsets from Intel the market has been flooded with a magnitude of new and exciting options, but be careful, as I found not all seems as it appears.

After checking several manufacture website and reviews I found this little beauty, ABIT IP35 Pro. The IP35 Pro is ABIT’s top line motherboard built around the Intel P35 chipset, which supports today’s latest processors and has the ability to address 8 GB of memory (about time really, Windows x64 here I come), sure to keep any enthusiast happy… Well that’s what I thought until reading this review.
"...a few corners cut, for example while the board does offer dual Gigabit LAN controllers both use the PCI bus."

First off, PCI should be taken out the back and shot! The devices I am interested in are all available on PCI Express interfaces. I consider PCI to be an obsolete architecture and, short of the backwards compatibility argument, the only reason we keep it around is because the devices are cheap.

So why is PCI (in particular PCI revision 2.3 – 32bit, 33MHz, as found on the Intel ICH9) dead to me? Bandwidth - with HD DVD/TV, Dolby 7.1, DirectX 10 Graphics cards and Gigabit demanded for the media rich experience on computers these days device interconnectors limited to 133MB/s just seems daft!  The math is simple – there just isn’t enough room to move all that data around, look at the diagram below?

You could argue that bottlenecks on other interfaces would be reached, disk transfer speeds, before you see limits on PCI devices, however with the ability to address 8 GB of RAM and high-performance SATA RAID controllers coming down in price the limiting factor in system performance is already PCI devices.

What are your options if you ‘must’ keep that SLI Voodoo2 setup in your system? PCI-X. PCI-X is an enhanced version of PCI, it has a 64bit bus and supports speeds of 133MHz giving it a total bandwidth of 1064MB/s. PCI-X has backwards compatibility for most 3.3Volt PCI cards but don’t think you will get any higher frame rates due to the 64bit bus or increase speed of the bus, you will still be limited by the PCI card. Currently the only 3 series Intel chipset available with PCI-X is the Supermicro C2SBX which is built around the Intel X38 chipset and only supports DDR3 memory.

The ABIT board I have attacked in this post is not alone. Really the issue here is with the chip ABIT and other manufacturers use to provide on-board controller network, the Realtek RTL8110SC. This chip is designed to only connect to a PCI bus which means that, not only does the existing P35 offering from ABIT suffer from this problem, but the new ABIT IX38-Max, ‘workstation’ class motherboard, the will have the same problem, along with other manufactures such as ASUS, Gigabyte and Foxconn.

For the moment I am still undecided which motherboard I will finally purchase for my new rig, hopefully I will find one with no PCI interfaces at all, somewhat of a pipe dream I feel.

Thursday, November 01, 2007 10:05:19 AM (E. Australia Standard Time, UTC+10:00)
 Sunday, October 14, 2007

I hate drawing Visio diagrams. I’m no Picasso and, for me, drawing a network diagram is one of these necessary evils that I avoid doing as long as humanly possible.

Not anymore, the good people at Microsoft have released the Microsoft Active Directory Topology Diagrammer which dynamically creates Visio diagrams for your Windows infrastructure. The topology tool reads your AD configuration, including domains, sites, servers, administrative groups, routing groups and connectors (for those with Exchange) and outputs a detailed library of diagram for you to manipulate as required.

Impressed with this release I spent some time google’ing other Visio automation tools, chasing that illusive magic bullet to cure all my Visio pains, I found an abundance of information and samples on MSDN. One such sample, How to use OLE automation in Visio, is a VBA macro that did most of the grunt work, loading and created a new Visio diagram, drawing a shape with a label, saving the changes and closing Visio. Apart from being a macro it performed the key functionality that would be required for any tool. To obtain the flexibility I was looking for I have transposed the macro code to a Powershell script which we can expand on later.

# ' Create an instance of Visio and create a document based on the
# ' Basic Diagram template. It doesn't matter if an instance of
# ' Visio is already running, CreateObject will run a new one.
# Set AppVisio = CreateObject("visio.application")
$AppVisio = New-Object -ComObject Visio.Application

# Set docsObj = AppVisio.Documents
$docsObj = $AppVisio.Documents

# ' Create a document based on the Basic Diagram template that
# ' automatically opens the Basic Shapes stencil.
# Set DocObj = docsObj.Add("Basic Diagram.vst")
$DocObj = $docsObj.Add("Basic Diagram.vst")

# Set pagsObj = AppVisio.ActiveDocument.Pages
$pagsObj = $AppVisio.ActiveDocument.Pages

# ' A new document always has at least one page, whose index in the
# ' Pages collection is 1.
# Set pagObj = pagsObj.Item(1)
$pagObj = $pagsObj.Item(1)

# Set stnObj = AppVisio.Documents("Basic Shapes.vss")
$stnObj = $AppVisio.Documents.Add("Basic Shapes.vss")

# Set mastObj = stnObj.Masters("Rectangle")
$mastObj = $stnObj.Masters.Item("Rectangle")

# ' Drop the rectangle in the approximate middle of the page.
# ' Coordinates passed with the Drop method are always inches.
# Set shpObj = pagObj.Drop(mastObj, 4.25, 5.5)
$shpObj = $pagObj.Drop($mastObj, 4.25, 5.5)

# ' Set the text of the rectangle.
# shpObj.Text = "This is some text."
$shpObj.Text = "This is some text."

# ' Save the drawing and quit Visio. The message pauses the program
# ' so you can see the Visio drawing before the instance closes.
# DocObj.SaveAs "MyDrawing.vsd"
$DocObj.SaveAs("C:\MyDrawing.vsd")
# MsgBox "Drawing finished!", , "AutoVisio (OLE) Example"

# ' Quit Visio.
# AppVisio.Quit

$AppVisio.Quit()

# ' Clear the variable from memory.
# Set AppVisio = Nothing

In an effort to make it that little bit easier to understand I have commented all the sample code and incorporated the Powershell equivalents. Remember that Powershell, unlike VB 6, doesn’t support default properties. So when we are calling a method (e.g. $stnObj.Masters) we have to define the property we are setting (e.g. Item).

So great I have a rectangle with some text in the middle of a blank Visio, not very useful, but after a few changes we have something that will dynamically generate stencils for all computers in a domain.

# Zero initial drop coordinates
$x = 0
$y = 1.20

# Create an instance of Visio and create a document based on the Basic Diagram template.
$AppVisio = New-Object -ComObject Visio.Application
$docsObj = $AppVisio.Documents
$DocObj = $docsObj.Add("Basic Diagram.vst")

# Set the active page of the document to page 1
$pagsObj = $AppVisio.ActiveDocument.Pages
$pagObj = $pagsObj.Item(1)

# Load a set of stencils and select one to drop
$stnObj = $AppVisio.Documents.Add("SERVER_M.vss")
$mastObj = $stnObj.Masters.Item("Server")

# Retrieve a list of computer accounts from Active Directory
#
http://www.microsoft.com/technet/scriptcenter/resources/qanda/nov06/hey1109.mspx

$strCategory = "computer"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = ("(objectCategory=$strCategory)")

$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
{
  $objComputer = $objResult.Properties; $objComputer.name
  
  # Set coordinates for drop
  $x = $x + 1.30
  
  # Loop to the next line
  if($x -ge 8)
  {
   $x = 1.30
   $y = $y + 1.20
  }
  
  # Drop the selected stencil on the active page, with the coordinates x, y
  $shpObj = $pagObj.Drop($mastObj, $x, $y)
  
  # Enter text for the object
  $shpObj.Text = $objComputer.name
 }

# Save the diagram
$DocObj.SaveAs("C:\CMDBREAK_MyDrawing.vsd")

# Quit Visio
$AppVisio.Quit()

Lost?

Highlighted above in each of the colours is the following:
Yellow – What we started with, only modified to select and drop the Server stencil.
Red – Controls where we drop each stencil, so as they are not on top of each other.
Blue - Enumerates all computer accounts in the local domain. Detailed explanation is available at Hey, Scripting Guy! How Can I Use Windows PowerShell to Get a List of All My Computers?

Now we have a script that will retrieve all the computer accounts in an AD domain and draw shapes for each, one of the monotonous tasks required for any network diagram.

To recap we have converted a VBA macro to a Powershell script and after a few additions we can generate a set of Server stencils labelled with the hostnames of all computers connected to an AD domain. This is just a start, with some more modifications it would be easy to select a different stencil based on the services running or have the script modify existing shapes in a drawing to create a dynamic network diagram.

Happy Visio Automagic.

Sunday, October 14, 2007 9:59:08 PM (E. Australia Standard Time, UTC+10:00)
 Wednesday, October 10, 2007

Welcome to CommandBreak.com and thank you for visiting.

This blog is dedicated to the ramblings of myself, Ben Parker, on various IT topics.

I hope you find something worthwhile in my posts, and feel free to contact me via comments or email.

Wednesday, October 10, 2007 9:36:59 AM (E. Australia Standard Time, UTC+10:00)
Navigation
Search
On this page....
Archives
<November 2007>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
Categories
Blogroll
Contact me
Send mail to the author(s) E-mail
Powered by

newtelligence dasBlog 2.0.7226.0.