Body:

Dashboard1
I’m a firm believer in “What gets measured, gets managed.” In our office we have a 42” dashboard in portrait mode attached to an HP Netbook at the end of our main hallway just outside my office and across from our service manager’s desk. This monitor has the a number of gadgets on it from the current time, date, weather, traffic, and a number of metrics from ConnectWise. The bottom 75% of the screen shows the Zenith dashboard.

Unfortunately, the main Zenith dashboard cannot show everything. Several other views from the “Quick Access” tab were needed to complete the picture (ie. Servers, Veritas Backups, and ITS247 Backup). So we could purchase 3 more 42” monitors to have all of the this data visible or we could implement the following PowerShell script to step through each of these dashboards every 15 seconds on one monitor.

Several outstanding problems got addressed the first week we implemented these additional views on our dashboard: servers that where not being patched, backups that where not completing, alerts that had gone unnoticed, etc.) What gets measured, get managed AND gets done.
Money
Yes, that is $20 taped to the bottom of the monitor. It’s all about accountability, even for the owner. Here is a close up of the note. $10 was just not enough pain. And yes, I have given the $20 away several times. But my first question to the staff member that points out my error and asks for the $20: “Is your time up-to-date?”
To get this PowerShell script to run, you’ll have to do a few things.

1. Edit the script to contain the correct login and password
2. Set the Powershell execution policy on the machine to
RemoteSigned
Start Powershell as administrator
Run: Set-ExecutionPolicy RemoteSigned
Enter Y to confirm
3.  Copy to script to a local drive on the machine.
4. Setup startup shortcut to run the script.
Open Startup folder
Right-click, New, Shortcut…
Enter the location as: powershell –f
“c:pathtoscriptZenithDashboard.ps1″
Next
Enter a name for the shortcut
Next
Right-click the shortcut, click Properties
Set “Run” to “Minimized”
Here’s the PowerShell script:

# Settings:
$URL = “https://control.itsupport247.net/”
$Seconds = 5    # Number of seconds between refreshes
$Username = “xxxxxxxxxxxx”
$Password = “xxxxxxx”
# End Settings
#
# Innovative Systems, Inc.
# 11219 Financial Centre Parkway
# Little Rock, AR 72211
# http://www.isi.cc
# info@isi.cc
# (501) 217-8484
# Stop on error
$ErrorActionPreference = “Stop”
# Function to wait for IE to not be busy after clicking a link
function WaitOnIE
{
while($IE.Busy) { Start-Sleep -Milliseconds 100 }
}
# Function to find a link based on it’s text, then click it.
function ClickLink($LinkText)
{
# Find all A tags with InnerHTML containing the $LinkText.
#  In the case that there are multiple found, only select the first one.
$Link = $IE.Document.getElementsByTagName(“a”) | ?{$_.InnerHTML -like “*$LinkText*”} | select -First 1
# Make sure the link was found.  Clicking $Link if it was null would throw an error
if($Link)
{
$Link.Click()
}
WaitOnIE
}
# Create IE ComObject, navigate to URL, and make it visible
$IE = New-Object -ComObject internetexplorer.application
$IE.Navigate($URL)
$IE.Visible = $true
WaitOnIE
# Fill login and submit
$IE.Document.getElementById(“user_txt”).Value = $Username
$IE.Document.getElementById(“user_pass”).Value = $Password
$IE.Document.getElementById(“Submit”).Click()
WaitOnIE
# Comes up to dashboard, so sleep before starting the loop
Start-Sleep -Seconds $Seconds
# Loop through screens
while($true)
{
# Click Quick Access
ClickLink -LinkText “Quick Access”
Start-Sleep -Seconds $Seconds
# Click Veritas Backups
ClickLink -LinkText “Veritas Backups”
Start-Sleep -Seconds $Seconds
# Click ITS247 Backup
ClickLink -LinkText “ITS247 Backup”
Start-Sleep -Seconds $Seconds
# Click Dashboard
ClickLink -LinkText “Dashboard”
Start-Sleep -Seconds $Seconds
}
Published: 9/8/2010 10:39 AM
Published with permission from Robert Lindley. Source.
Bookmark and Share