Windows 7

IT Helpdesk: Remember Your Roots

Posted on Updated on

It finally happened…it all fell into place (for once).  After three years of not being able to get the time to do it, Summer came and I was given the time and the latitude to get the classroom computers RIGHT this time.

So I meticulously created a classroom image with all the trimmings and then imaged all of the classrooms Bing-Bam-BOOM.  I then arranged everything in a clean order on the start menu (Win7 desktops) and on the taskbar so that professors, staff and visiting lecturers alike would MARVEL at the clean, efficient and …dare I say it?… beautiful interface.  I then FROZE the masterpieces in Faronics Deep Freeze and went on to my next Sistine Chapel.

And then one of my staff customers, in charge of a set of classrooms lowers the boom on me: “I need the icons in this order: X then Y then Z but only after Q.”

SonofaB… !

This is precisely what I thought of when the request was made:

Now normally I wouldn’t be so sensitive about such matters.  But, I had spent many hours planning & executing these upgrades to the classrooms, and I didn’t expect the opportunity to do it again for another 3 years.  So, naturally, I was initially quite pissed.  However, being the consummate professional that I am <smirk> I called the customer up and tried to explain that if I changed those classrooms, I would have to change all of the other classrooms in order to provide everyone using those computers with the same experience no matter what geographical location they taught at.  I was not convincing enough and I had promised half-heartedly to consult my manager and see what could be done.

Was I going to consult with my manager?  Uh…NO.  These things are delegated to me for a reason and I’m not about to take his confidence in my abilities so lightly as to run back to him every time I need a simple decision made.  I appear to be a rarity in this respect and I’m proud of the fact that, good or bad, I can:

  • Determine if the problem really requires escalation to an already overworked manager.
  • Make the call and then stand by it.
  • Man-up if I EFF up.
  • Keep my mouth shut if I do a good job.
    • (I’m not always successful at keeping my mouth shut, as my coworkers will attest)

So back to the issue at hand:  Having REAL problems to deal with, I’ve been sitting on this customer’s request for a few days.  So here I am on a Saturday morning, remoting-in to each classroom and changing the fricken icons.  I’m waiting for one of you to ask why.

…glad you asked.

It dawned on me last night as I ‘escaped’ from work that I had forgotten my helpdesk ‘root axioms’ and I had also forgotten the basic libertarian tenets that I claim to cherish:

  • Your customer is right unless they’re stupid and even then you must consider their request.
  • Decisions affecting the end user should nearly always be made by the person closest to the end user.

My customer is a very savvy, smart and dedicated person.  Her request came with the fact that she is on the front lines of these classrooms and has to deal with all of the issues that come up.  Bottom Line:

  • She’s not making these requests lightly.
  • She knows way more about what her customers need than I do…PERIOD.

So…while I have one window open updating the classrooms in my office dressed in a T-Shirt and boxer-briefs (ewwwww!), I’m writing this in my technical blog to remind you out there that you may think you’re the SHIT (and to some extent, you’re correct) but you don’t know everything.

The more you remind yourself of your limitations.  The more you remind yourself that those closest to the problem usually have the better solution.  The more you remind yourself that you are INDEED ‘The SHIT’ and that you need humble yourself before those who know way the EFF more than you do…

…The better technician, customer service specialist and person you’ll be.


My First PowerShell Script

Posted on

Necessity being the motherf***er of invention, I took my first step at becoming an IT adult.  I was inspired by my colleague Dean Bunn here on the UC Davis campus who has done incredible scripting to automate and make our IT day a little shorter and easier.  Thanks, Dean.

I used The Windows PowerShell Library at Microsoft’s TechNet site for syntax and use.  Great resource!

This script is presented with no warranties, rights or responsibilities for it’s use in any situation.  If you use this script for your own purposes, it’s your fault if you EFF something up…PERIOD.

I recommend that you “#” (comment-out) the Clear-EventLog $log -ComputerName $server line before you start modifying and testing the script.  You’ve been warned.


# EventLogMaintenance.ps1
# By Brian McQuaig

# This script will go to each server, retrieve and save error events from specific logs
# save the logs as CSV files on your local computer and the remote server.
# This script expects:
#   Your local computer has a C:\adminlogs directory.
#   Your remote server has a c:\adminlogs directory.
#   You are logged into a computer with the proper setup to obtain NETBIOS resolution.
#   You are logged in with your global ADMIN credentials.That is,
#     credentials that cover your local and remote connections.
# NOTE: It is common for you to see errors when the script is looking for “failure audit”
# entries in anything but the security log. So, please disregard those errors, if encountered.
# ——————————————————-

# Set names of path & date
$t = get-date
$p = “c:\adminlogs\”

# Create an array of your server’s NETBIOS names…
$servernames = “Server1″,”Server2″,”Server3″,”Server4″,”Server5″,”Server6″,”Server7″,”Server8”

# Create an array of the types of logs we’re going to review
$logtype = “application”,”security”,”system”

# First loop: Yank each servername in-turn.
Foreach ($server in $servernames){

# Second loop (nested in first, to get/save each log from the specific server in-focus.
Foreach ($log in $logtype) {

# $filname is going to equal the local adminlogs path + the name of the file.
$filename = $p + $server + “_” + $log +”_” + $t.Year + $t.Month + $t.Day + “_” + $t.hour + $t.minute + “.csv”

# $sharename is going to equal the remote server’s path to the adminlogs directory + the name of the file.
$sharename = “\\” + $server + “\c$\adminlogs\” + $log +”_” + $t.Year + $t.Month + $t.Day + “_” + $t.hour + $t.minute + “.csv”

# Now get $server’s $log and export it to your local adminlog directory for review. Then tell me that you’ve done it.
Get-EventLog $log -ComputerName $server -EntryType error,failureaudit | Export-Csv $filename
$filename + ” written.”

# Now get $server’s $log and export it to the $server’s adminlog directory for safekeeping.  Then tell me that you’ve done just that.
Get-EventLog $log -Computername $server -EntryType error,failureaudit | Export-Csv $sharename
$sharename + ” written.”

# OK…Eventlog saved, now clear the event log and go on to the other logs/servers.
Clear-EventLog $log -ComputerName $server
$log + ” on ” + $server + ” cleared.”
“Script Finished.  Now rifle through the CSV files on your local computer at c:\adminlogs and fix stuff!”
# done