<?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>AkinsTech</title>
	<atom:link href="http://blog.akinstech.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.akinstech.com</link>
	<description>There are 10 types of people in the world...those that understand binary...</description>
	<lastBuildDate>Mon, 07 Nov 2011 17:49:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Getting ESX to recognize large arrays</title>
		<link>http://blog.akinstech.com/getting-esx-to-recognize-large-arrays</link>
		<comments>http://blog.akinstech.com/getting-esx-to-recognize-large-arrays#comments</comments>
		<pubDate>Tue, 09 Mar 2010 19:47:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/?p=64</guid>
		<description><![CDATA[Recently I have been migrating my home virtual server and lab environment from Hyper-V to VMWare ESXi 4.0.  In doing this I found that ESXi has a problem recognizing all of the space on my Dell PERC5 RAID array.  I&#8217;m not sure if this is a bug, or just bizarre behavior between the two, but after [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have been migrating my home virtual server and lab environment from Hyper-V to VMWare ESXi 4.0.  In doing this I found that ESXi has a problem recognizing all of the space on my Dell PERC5 RAID array.  I&#8217;m not sure if this is a bug, or just bizarre behavior between the two, but after several days of googling and checking forums I was unable to find a solution.  After troubleshooting the problem a little further, I&#8217;ve come up with a workaround.<span id="more-64"></span></p>
<p>First off, I have a Dell PERC5 RAID card in my server.  I have 4 Samsung 1TB SATA drives configured in RAID5 which creates a usable disk of 2.73TB.  But when I try to add storage in ESXi, and select this device, it only recognizes 745GB, even though the disk is empty.  See below&#8230;</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture0.jpg"><img class="alignnone size-full wp-image-95" title="PERC5ProblemCapture0" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture0.jpg" alt="" width="753" height="587" /></a></p>
<p>Now I already know that ESX/ESXi (I&#8217;ll just use the word &#8220;ESX&#8221; interchangably to refer to ESX or ESXi) has a 2TB limit on VMFS volumes, as shown <a href="http://www.vmware.com/pdf/vi3_301_201_config_max.pdf">in this document</a>.  But instead of presenting me with the ability to create a 2TB vmfs volume, it&#8217;s giving me 2.73TB-2TB Limit = .73TB (or 745GB).</p>
<p>I experimented a bit, and rebuilt my array as a 3x1TB, which creates a 1.82GB disk.  Turns out that ESX was able to see all of the space!  So clearly the problem exists when you present ESX an array large2 than the 2TB limit.  But I want the full 2.73TB&#8230;and I don&#8217;t want to split my array up into a smaller disk set.  So here&#8217;s how to get around this.</p>
<p>Note: This will destroy everything on your RAID array, so make sure you back up all your data.</p>
<ol>
<li>Reboot your server and press CTRL-R to enter the PERC5 Configuration Utility.</li>
<li>Delete your old RAID array (Virtual Disk).</li>
<li>Now create the new one.  Highlight &#8220;Controller 0&#8243; and press F2. Select &#8220;Create New VD&#8221;</li>
<li>Select your RAID type. (In my case RAID5)</li>
<li>Select the disks. (In my case, all 4 of the 1TB disks)</li>
<li>Select your Advanced Settings
<ul>
<li>Element Size: 128K</li>
<li>Read Policy: Adaptive Read Ahead</li>
<li>Write Policy: Write Back</li>
</ul>
</li>
<li>Then, under &#8220;Basic Settings&#8221; set the VD Size to 2097152MB</li>
<li>Then select OK.  This will create a 2TB array just under ESX&#8217;s 2TB-512B limit.</li>
<li>Now go back and create another virtual disk with your remaining space.</li>
<li>Expand &#8220;Space Allocation&#8221; with the right-arrow</li>
<li>You will see &#8220;Free Space&#8221;.   Highlight this and press enter.  This will create another VD using your free space.</li>
</ol>
<p>You will now have 2 virtual disks on the controller&#8230;one 1.99TB and the other 745GB.</p>
<p>Exit out of the PERC5 Cofiguration utility and reboot into ESX.</p>
<p>Now go to Configuration, Storage, click on &#8220;Devices&#8221; and you&#8217;ll notice we have two disks presented to ESX&#8230;.one 2.00TB and one 745GB.  Before you do anything, it&#8217;s a good idea to rename the devices to something meaningfull.  Right click each one and select rename.  I named mine PERC5 Array 0-0 and PERC5 Array 0-1, respectively.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture2.jpg"><img class="alignnone size-full wp-image-87" title="PERC5ProblemCapture2" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture2.jpg" alt="" width="951" height="189" /></a></p>
<p>Now click on Datastores and then click Add Storage.  Select Disk/LUN, and then select the 2TB disk below and click next.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture3.jpg"><img class="alignnone size-full wp-image-88" title="PERC5ProblemCapture3" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture3.jpg" alt="" width="752" height="587" /></a></p>
<p>Select your block size, and give it a name&#8230;and so on. </p>
<p>When finished you will have a 2TB datastore.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture4.jpg"><img class="alignnone size-full wp-image-89" title="PERC5ProblemCapture4" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture4.jpg" alt="" width="614" height="139" /></a></p>
<p>Now, you can create a second datastore from the other 745GB partition, but I don&#8217;t like that idea as it fragments the storage.  I want my full 2.73TB to be one contiguous datastore.  So for that we&#8217;ll use an extent. </p>
<p><strong>But wait, aren&#8217;t extents bad?</strong></p>
<p>If you&#8217;ve done any research on extents you might find many recommendations in forums and blogs against them.  Unfortunately much of the commentary regarding extents is mired in misconception and fear.  An extent simply distributes a vmfs volume across multiple disks or LUNs.  The basic fear is that a failure in one of those disks or LUNs would cause most or all of that VMFS volume to fail.  I agree with that argument and try to avoid using extents across multiple sets of spindles.</p>
<p>However, in OUR case, our two virtual disks are located on the SAME set of spindles&#8230;just as if we had created one large virtual disk.  If we lose disks in our RAID array, both disks disks will go down, no matter how it is configured.  So by using an extent we are not adding or creating any additional risk of failure in our situation. </p>
<p>To create the extent, simply right-click the 2TB datastore you created, and select properties.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture5.jpg"><img class="alignnone size-full wp-image-90" title="PERC5ProblemCapture5" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture5.jpg" alt="" width="717" height="551" /></a></p>
<p>Click the Increase button.  Then select your remaining 745GB disk.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture6.jpg"><img class="alignnone size-full wp-image-91" title="PERC5ProblemCapture6" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture6.jpg" alt="" width="556" height="114" /></a></p>
<p>The 745GB disk will be added to the 2.0GB disk.  Now click Close.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture7.jpg"><img class="alignnone size-full wp-image-92" title="PERC5ProblemCapture7" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture7.jpg" alt="" width="717" height="550" /></a></p>
<p>Now you&#8217;ll see that our data1 datastore shows up as a full 2.73TB.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture8.jpg"><img class="alignnone size-full wp-image-93" title="PERC5ProblemCapture8" src="http://blog.akinstech.com/wp-content/uploads/2010/03/PERC5ProblemCapture8.jpg" alt="" width="650" height="154" /></a></p>
<p>Hopefully this solution helps others trying to run large arrays on a PERC5 using VMWare ESX.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/getting-esx-to-recognize-large-arrays/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Understanding Windows 7 and 2008 R2 UAC and permissions</title>
		<link>http://blog.akinstech.com/understanding-windows-7-and-2008-r2-uac-and-permissions</link>
		<comments>http://blog.akinstech.com/understanding-windows-7-and-2008-r2-uac-and-permissions#comments</comments>
		<pubDate>Thu, 11 Feb 2010 00:00:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Permissions]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/?p=103</guid>
		<description><![CDATA[If you&#8217;ve worked with Windows 7 or Server 2008R2 for any length of time, certainly you&#8217;ve run into situations where you find you don&#8217;t have permission to read, modify, or delete files and folders, even though you&#8217;re an Administrator.  With this article I hope to explain (in very basic terms) why this happens and more [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve worked with Windows 7 or Server 2008R2 for any length of time, certainly you&#8217;ve run into situations where you find you don&#8217;t have permission to read, modify, or delete files and folders, even though you&#8217;re an Administrator.  With this article I hope to explain (in very basic terms) why this happens and more importantly, how you can provision things to ensure you always have permission, along with a simple script to set these permissions.<span id="more-103"></span></p>
<p>First of all, to see this in action, log into any system with an administrator account other than the built-in administrator.  Then browse to the C:\Users directory and try to open one of the folders other than your own.  You will see this&#8230;</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2010/03/NoPermissionDialog.jpg"><img class="alignnone size-full wp-image-104" title="NoPermissionDialog" src="http://blog.akinstech.com/wp-content/uploads/2010/03/NoPermissionDialog.jpg" alt="" width="366" height="189" /></a></p>
<p>Now the natural tendancy here is to just click &#8220;Continue&#8221;.  But really this is the LAST thing you want to do, especially on a server.  If you do that, you&#8217;re going to permanently modify the permissions of that folder and add the user name you are logged in with.  In a large environment with many click-happy administrators, this can get very messy with everybody&#8217;s names tattooed all over the folders&#8217; ACLs..</p>
<p><strong>I&#8217;m an administrator dammit, why dont I have permission?</strong></p>
<p>When you are interactively browsing the file system of a Windows 7 or 2008 R2 machine, UAC (User Account Control)  checks to see exactly HOW it is that you have permission to a folder.  If the only way you have permission to a folder is via the built-in &#8220;Administrators&#8221; group, then it is going to block you and throw up that message.  So how do you get around it? </p>
<p><strong>Why don&#8217;t I just disable UAC?</strong></p>
<p>You could.  But I recommend you don&#8217;t.  If you&#8217;ve ever used a Unix or Linux system you know that being &#8220;administrator&#8221; doesn&#8217;t necessarily mean you have permission to all files.  You have to be granted permision.  In fact being administrator AND having full access to files can be a very bad thing security wise. </p>
<p>For years Windows users have enjoyed carte blanche when it comes to access to files.  This free-for-all access has led to the proliferation of malware, lazy programming practices, and a reputation as an &#8220;insecure&#8221; operating system. </p>
<p>UAC, for all its pop-ups, delays, and annoyances is a step in the right direction.  Furthermore (and most importantly) leaving it on forces administrators, lazy developers, and systems engineers to architect solutions properly.  That is a good thing.</p>
<p>So then how do you get around it?</p>
<p><strong>Stop working locally!</strong></p>
<p>Notice above I said that UAC stops you when you&#8217;re working &#8220;interactively&#8221;.  That means accessing  files while logged into the system.  In the case of a workstation, obviously most of your work will be interactive, but not necessarily on a server.  In fact one of the easiest ways to avoid being pelted by UAC&#8217;s &#8220;You don&#8217;t have permission&#8221; notice, is to simply do your file management work remotely, via UNC.  So instead of logging into the server and operating on C:\ThisFolder, just simply access it from another machine as <a href="file://\\TheServer\C$\ThisFolder">\\TheServer\C$\ThisFolder</a>.  No UAC issues. </p>
<p><strong>Provision folders with a FileAdmin group</strong></p>
<p>Remember from above the problem here is that you only have permission via the built-in Administrators group, which UAC is blocking.  So why not just create another group, give it full control, and put yourself (or perhaps your &#8220;Domain Admins&#8221; group in this group)?  That&#8217;s exactly what I recommend doing when you provision a file server. </p>
<p>I like to create a local group (or a domain local group if you have Active Directory) called &#8220;F_FileAdmin&#8221;.  I then apply this group to all data areas on the server, giving it full control.  Then add your server admin team, file administrator team, and other appropriate people to this group.</p>
<p>Assume I have a server with a D: drive where I plan to store data.  I&#8217;m going to apply the F_FileAdmin group to the entire D: drive.  For this example I&#8217;ll use a local group on the server, but you could just as easily do a domain local group in AD.</p>
<p>First create the group.  Either run &#8220;Local Users and Groups&#8221; on that server, or from an elevated command prompt on that server, enter:</p>
<p><code>net localgroup "F_FileAdmin" /add</code></p>
<p>Now add yourself, other admins, Domain Admins, etc to this group.  You&#8217;ll need to log off and back on for the change to take effect.  Next you set the permissions.</p>
<p>If you try to set permisisons using the traditional GUI method, you may run into problems if you dont actually own some of the files.  Therefore we need to do this from an elevated command prompt using the icacls command.  Enter the following command:</p>
<p><code>icacls D:\ /grant "F_FileAdmin":(OI)(CI)F /T</code></p>
<p>This will add the &#8220;F_FileAdmin&#8221; group to the entire D: drive and propogate the permissions down to all subfolders and files, ensuring you have access. </p>
<p><strong>Automating it</strong></p>
<p>Since I&#8217;m all about automation and standardization, let&#8217;s take the above icacls command and turn it into a reusable command you can run any time you need to provision a folder.</p>
<p>SetFileAdmin.bat<br />
<code>@echo off<br />
icacls %1 /grant "F_FileAdmin":(OI)(CI)F /T</code></p>
<p>Stick this batch file in your scripts directory such that it is in your path.  Now on any server, from an elevated command prompt, you can provision a folder by simply typing:</p>
<p><code>setfileadmin d:\SharedData<br />
setfileadmin e:\<br />
setfileadmin "f:\Accounting Files"</code></p>
<p>Or even use it remotely like this&#8230;<br />
<code>setfileadmin \\MyServer\d$\GroupData</code></p>
<p>Note: UAC problems aside, this script also demonstrates a useful technique for provisioning folder permissions.  If you&#8217;re still doing it manually through the GUI, learn to use icacls.  In an upcoming article I&#8217;ll go more in-depth into how to use icacls to provision folder security.</p>
<p>As you can see, with a few simple modifications, you can get around the UAC permissions problems on Windows 7/Server 2008R2, and most importantly, do it without having to disable UAC and compromise security.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/understanding-windows-7-and-2008-r2-uac-and-permissions/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Getting the blog back up and running</title>
		<link>http://blog.akinstech.com/getting-the-blog-back-up-and-running</link>
		<comments>http://blog.akinstech.com/getting-the-blog-back-up-and-running#comments</comments>
		<pubDate>Thu, 11 Dec 2008 18:53:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Info]]></category>

		<guid isPermaLink="false">http://www.akinstech.com/blog/?p=3</guid>
		<description><![CDATA[After switching some web hosts around I never took the time to put my blog back up. Well now I&#8217;ve got some new projects, ideas, and things I&#8217;m working on that I&#8217;d like to post so I&#8217;m working on getting the blog back up and running. I&#8217;ve been messing around with Joomla a bit, and [...]]]></description>
			<content:encoded><![CDATA[<p>After switching some web hosts around I never took the time to put my blog back up.  Well now I&#8217;ve got some new projects, ideas, and things I&#8217;m working on that I&#8217;d like to post so I&#8217;m working on getting the blog back up and running.  I&#8217;ve been messing around with Joomla a bit, and while I think it&#8217;s pretty neat, I think I&#8217;m going to go back to the tried and true WordPress.  More to come&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/getting-the-blog-back-up-and-running/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>i = Ignorance</title>
		<link>http://blog.akinstech.com/i-ignorance</link>
		<comments>http://blog.akinstech.com/i-ignorance#comments</comments>
		<pubDate>Thu, 11 Dec 2008 20:41:36 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/?p=15</guid>
		<description><![CDATA[Only a few days after the release of the Apple iPhone, I&#8217;m already tired of hearing about it. Every news program felt the need to dedicate large portions of their coverage to people purchasing these things and asking them their thoughts on it&#8230;or asking others if they plan to buy one.  Like uninformed lemmings, people [...]]]></description>
			<content:encoded><![CDATA[<p>Only a few days after the release of the Apple iPhone, I&#8217;m already tired of hearing about it. Every news program felt the need to dedicate large portions of their coverage to people purchasing these things and asking them their thoughts on it&#8230;or asking others if they plan to buy one.  Like uninformed lemmings, people stood in line for hours to get one of these things.</p>
<p>Listen&#8230;</p>
<ul>
<li>There were Internet Phones before the iPhone</li>
<li>There were MP3 players before iPod</li>
<li>There was online music before iTunes</li>
</ul>
<p>My 2-year old Treo 700w gets email, surfs the web, takes calls and integrates seamlessly with Outlook/Exchange on my desktop. If I add a contact to Outlook at my desk, it shows up in the Treo. Vice versa. Same with appointments or anything else. Furthmore, I don&#8217;t NEED to store music on my Treo. If I want, I can stream my entire music library (sitting on my media server at home) to my Treo using a free media server like TVersity.  Because the Treo is based on Windows Mobile, I can add just about any feature or application to the phone that I want.  And if the feature doesn&#8217;t exist, there are development tools available for download so I can write it myself.  Does my Treo have its problems? Yes it does. It can be downright frustrating at times. Is the iPhone &#8220;slicker&#8221; than my Treo? Absolutely! The iPhone is a work of art. Would I trade my Treo for the iPhone? Not on your life.</p>
<p>I will hand it to Apple&#8230;they have a way of taking an EXISTING product, making it work better for the masses, giving it a cool package, a cool name, and somehow making us think they were the first to come out with it. Further (and what really irritates me) Apple has found a way to make their &#8220;i&#8221; Device synonymous with all devices of the breed.   &#8220;iPod&#8221; or &#8220;like an iPod&#8221; is now synonymous with all MP3 players, even though MP3 players have been around since the mid-90&#8242;s.  &#8220;iTunes&#8221; is now becoming synonymous with all online media stores, even though Napster, Yahoo, and Rhapsody have very large, very flexible services.</p>
<p>Some may say this is just simply good business, but I feel that in doing so Apple is doing a disservice to the eventual progression of these technologies. If you buy an iDevice, you are buying into the &#8220;Apple Way&#8221; and limiting yourself from ever expanding or enhancing your capabilities in the future. You send a message (with your purchasing dollars) that directly discourages the adoption of open standards.  Furthermore, other companies (ones who make more universal devices) are now forced by market pressure to make their devices look and work more like the industry leading &#8220;iDevices&#8221;.  Take a look at every MP3 player.  What do they all look like?  They look like iPods.</p>
<p>Let&#8217;s take a look at the iPod. First off, you don&#8217;t have the flexibility you have with a &#8220;generic&#8221; MP3 player. Take the task of loading music onto it.  Most of the generic MP3 players simply plug in and become a drive letter on your PC. You then copy files to it. YOU are in control of how you get the files to the device&#8230;whether it be the Vendor-provided software, some other third-party Media Player, or you can write your OWN script or software to perform the task.  Sure, you can use the handy wizard-based software to do it, but the key is that you don&#8217;t HAVE to.</p>
<p>This is not the case with Apple. iPod REQUIRES use of its software suite to use the player. This is a double-whammy of disservice to the technical community.  First, it creates a community of ignorant users who don&#8217;t know how to do it any other way.  Second, it locks these users into a proprietary way of doing things.  It converts their files to a proprietary &#8220;Apple&#8221; format such that if an iPod user ever DOES buy a Creative Zen player (which is a MUCH better choice, by the way) they will pretty much be starting over.  Apple&#8217;s methods discourage innovation and independent community development of the technology.</p>
<p>And by the way&#8230;.ever wonder why MP3 became a popular technology in the first place?  Community development.  If it weren&#8217;t for WinAmp, Napster, and LAME alone (all community-developed technologies) I doubt MP3 or PC-based music would be where it is today.</p>
<p>So back to the iPhone.  You might be wondering &#8220;Why is the iPhone bad, yet the Treo, which is based on Microsoft&#8217;s Windows OS, good?&#8221;.  That is a perfectly legitimate question.  And while I would rather that there was an open-source alternative OS for phones (we&#8217;ll see if Google can do anything with Android), the Windows mobile phones are currently the lesser of the two evils.</p>
<p>Support technologies that follow open standards, do not lock users into a single method, and that allow for community development.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/i-ignorance/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script to Check Wifi Signal Strength</title>
		<link>http://blog.akinstech.com/script-to-check-wifi-signal-strength</link>
		<comments>http://blog.akinstech.com/script-to-check-wifi-signal-strength#comments</comments>
		<pubDate>Fri, 29 Feb 2008 21:27:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/?p=118</guid>
		<description><![CDATA[I wrote this script recently to help me troubleshoot some issues with a client&#8217;s wifi.  It produces a running report of signal strength. I know there are commercial products which will do pretty graph surveys and draw boundaries for you, but you know that just isn&#8217;t my style.  :) I had remember seeing that there was [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote this script recently to help me troubleshoot some issues with a client&#8217;s wifi.  It produces a running report of signal strength. I know there are commercial products which will do pretty graph surveys and draw boundaries for you, but you know that just isn&#8217;t my style.  :)<span id="more-118"></span></p>
<p>I had remember seeing that there was an ndis80211 object in WMI.  So I did some research on Technet and found that it really is pretty simple.  All this script does is to perform a WMI query to grab the already available signal strength property.  This is likely the same information that hardware vendors grab when reporting their signal strength figures.</p>
<p>Nonetheless, the script works pretty good.  Just launch it with this command from an elevated command prompt:</p>
<p><code>cscript wifisignal.vbs</code></p>
<p>&#8230;and it will continuously spit out the signal strength in db.  Feel free to modify the descriptions to suit your needs.  I actually guessed at these using some common sense and a bit of research on acceptible signal levels.</p>
<p>wifisignal.vbs<br />
<code>Dim Strength,nInterval</code></p>
<p>nInterval = 1000 &#8216; How long to puase between checks (in ms)</p>
<p>Do While 1<br />
   Strength = GetWirelessStrength()<br />
  <br />
   If Strength &gt;= -40 Then<br />
      Desc = &#8220;Excellent&#8221;<br />
   ElseIf Strength &lt; -40 and Strength &gt;= -60 Then<br />
      Desc = &#8220;Very Good&#8221;<br />
   ElseIf Strength &lt; -60 and Strength &gt;= -80 Then<br />
      Desc = &#8220;Good&#8221;<br />
   ElseIf Strength &lt; -80 and Strength &gt;= -90 Then<br />
      Desc = &#8220;Low&#8221;<br />
   ElseIf Strength &lt; -90 and Strength &gt;= -99 Then<br />
      Desc = &#8220;Very Low&#8221;<br />
   ElseIf Strength &lt; -100 Then<br />
      Desc = &#8220;Unusable&#8221;<br />
   End If  <br />
   WScript.Echo Strength &amp; &#8220;db (&#8221; &amp; Desc &amp; &#8220;)&#8221;<br />
   WScript.Sleep nInterval<br />
Loop<br />
Function GetWirelessStrength()<br />
Dim objWMI, col</p>
<p>Set objWMI = GetObject(&#8220;winmgmts:\\.\root\wmi&#8221;)<br />
Set col = objWMI.ExecQuery(&#8220;Select * From MSNdis_80211_ReceivedSignalStrength &#8221; &amp; &#8220;Where Active = True&#8221;)<br />
For Each obj in col<br />
    GetWirelessStrength = obj.Ndis80211ReceivedSignalStrength<br />
Next</p>
<p>End Function</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/script-to-check-wifi-signal-strength/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clean Video Driver Upgrades</title>
		<link>http://blog.akinstech.com/clean-video-driver-upgrades</link>
		<comments>http://blog.akinstech.com/clean-video-driver-upgrades#comments</comments>
		<pubDate>Wed, 30 Jan 2008 20:42:52 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Drivers]]></category>
		<category><![CDATA[Must Have]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/clean-video-driver-upgrades/</guid>
		<description><![CDATA[In this article, I&#8217;ll show you the proper way to upgrade video drivers on your system, as well explain the difference between the various driver options. I&#8217;ll also show you a handy tool to assist you in cleaning up old video drivers. If you have a high performance video card (whether you&#8217;re a gamer, graphics [...]]]></description>
			<content:encoded><![CDATA[<p>In this article, I&#8217;ll show you the proper way to upgrade video drivers on your system, as well explain the difference between the various driver options.  I&#8217;ll also show you a handy tool to assist you in cleaning up old video drivers.</p>
<p>If you have a high performance video card (whether you&#8217;re a gamer, graphics designer, Home Theater PC builder, etc) you know how important it is to have the latest video drivers for your specific video card.  But HOW you install those drivers can be just as important.  Many lockups, crashes, freezes, or other anomalies can be attributed to lazy and sloppy driver installation.  I&#8217;m going to show you the method I use which has proven to reduce and almost eliminate video driver-related problems on my systems.<br />
<span id="more-46"></span><br />
<strong>Which Driver?</strong><br />
The first thing you need to consider is which driver to download.  Usually there are several different versions, each with different features.  On top of that, there are reference drivers, OEM drivers, etc.</p>
<p><strong>CD = Crappy Driver</strong><br />
First off, don&#8217;t ever use the driver that came on the CD.  Always download the latest driver.  From the time that CD was burned, pressed, packaged and boxed; that box has sat in a manufacturer warehouse, delivery truck, distributor shelves, delivery truck, store shelves, purchased, returned, re-shrink-wrapped, and purchased again before it finally sat nestled in the bottom your plastic Fry&#8217;s bag as you stand in line at the exit holding your receipt waiting for the 19yr pant-sagger who doesn&#8217;t know a video card from a box of diapers to mark your receipt with the oh-so-important pink highlighter mark of approval to ensure that you&#8217;re not stealing it, allowing you exit from the store&#8230;months have gone by since then, and that is an eternity in the video card world.  So always download the latest driver.</p>
<p><strong>OEM vs Reference</strong><br />
We all know that ATI and Nvidia are the &#8220;Big Two&#8221; when it comes to video cards.  But what many people don&#8217;t know is that ATI and NVidia don&#8217;t actually MAKE video cards.  Instead ATI and NVidia develop the video card technologies and make it available to video card manufacturers (OEM&#8217;s).  ATI and NVidia usually manufacture a prototype card that tells the OEM&#8217;s (Asus, Gigabyte, eVGA, Sapphire, XFX, BFGTech, MSI) &#8220;Hey, here&#8217;s what this new card should look like&#8221;.  They call this the &#8220;Reference Card&#8221;.  Along with the reference card, ATI and NVidia also release a set of Reference drivers.</p>
<p>So the video card OEMs each come out with their own versions of the Reference Card, each adding their own personal  modifications to it.  One OEM might add a better cooling fan, another OEM might increase the clock speed for better performance, and another might add an additional output.  They&#8217;re trying to compete with each other in offering unique features that the other guy doesn&#8217;t have.  But in the end, each OEM tries to create a card that is (at its core) as close as possible to the reference card, for compatibility reasons.</p>
<p>As each OEM deviates from the reference card, it sometimes becomes necessary for the OEM to also modify the reference drivers to work with their video card.  In some instances, an OEM will make performance enhancements to the reference card, but these enhancements can only be realized by using the OEM&#8217;s modified drivers.</p>
<p>So the question then becomes which should you choose?  Reference drivers or OEM Drivers?  Generally speaking, I always try to use drivers from the OEM FIRST.  If I experience problems, or the OEM isn&#8217;t keeping up with the latest reference driver enhancements, then I will use the reference driver.  The more specialized your card is, or the more &#8220;extreme&#8221; it is in performance, the more likely you should use the OEM driver.   But also keep in mind that most games and applications are written to be most compatible with the reference drivers.  So there is a balance between performance and compatibility.</p>
<p>But in short, go for the OEM driver first.  If that doesn&#8217;t work, go for the reference driver.</p>
<p><strong>Full Package or Driver Only</strong><br />
Typically the driver will come in several optional download packages.  Usually the recommended package will be the one that includes the driver, along with a control center and maybe some other applications.  I do not recommend you use this package unless you specifically need something provided by the control center.  I recommend you download the &#8220;Driver Only&#8221; package as it is simply less &#8220;stuff&#8221; to get installed on your PC.</p>
<p><strong>Driver Upgrade Procedure</strong><br />
OK, now that we know the who&#8217;s and why&#8217;s behind the drivers, and we have the proper driver downloaded, we can now get to the actual upgrade.</p>
<p>First, I recommend you download a program called <a href="http://www.guru3d.com/index.php?page=driversweeper  ">Driver Sweeper</a>.  Note there are two versions of the program: <em>(with Installer)</em> and <em>(no Installer, binaries only)</em>.  Quick question?  Which one do you think I want you to download?  Of course I want you to download the <em>(no installer, binaries only)</em> version!  We are cleaning our PC here, not installing more crap!  You will unzip this to your &#8220;Util&#8221; directory in a folder named &#8220;DriverSweeper&#8221;.  I put it on a network drive so it is available to run from any computer on my network.  This also makes a nice utility for your USB flash drive when you&#8217;re working on PC&#8217;s in the field.</p>
<p>Now that you have the right driver, and a copy of Driver Sweeper, here are the steps for upgrading your video drivers:</p>
<ol>
1. Exit all programs.</p>
<p>2. In Device Manager (I get there with Windows-Key+Pause, then Hardware tab) right-click your video card and click &#8220;Uninstall&#8221;.  When prompted, check the box to delete driver files.</p>
<p>3. Windows will ask you to reboot. Select No.  Close any remaining dialog boxes, then reboot.</p>
<p>4. As the computer comes back up, press F8 to go into safe mode.  Log in normally.</p>
<p>5. Navigate to C:\Util\DriverSweeper and run Driver Sweeper.  Highlight the video card driver brand you have, then click the button with the broom on it.  It will run very quickly.  In a second, you may click the Log button to see a log of what was deleted.<br />
<img src='http://blog.akinstech.com/wp-content/uploads/2008/01/driversweeper.jpg' alt='Driver Sweeper Screen' /></p>
<p>6. Reboot your computer normally and log in as you usually would. (No Safe mode)</p>
<p>7. If Windows prompts you to install New Hardware, click Cancel.  Do not let Windows install anything.</p>
<p>8. Execute the driver installer that you downloaded and follow instructions.  Depending on your specific card, and which driver package you are using the installation procedure will be a little different.  Usually it will extract to C:\NVIDIA or C:\ATI, which you would then navigate to and execute the appropriate setup.</p>
<p>9. When setup runs, UNCHECK any unneeded control applications, toolbars, Game Offers, or trials.  Install the drive only.  At the end of the install, select &#8220;No&#8221; to the reboot prompt, and then reboot manually.
</ol>
<p>That&#8217;s it&#8230;  By downloading the appropriate driver for your card, uninstalling and cleaning your old drivers, and installing the new drivers in a minimal, clean and controlled manner, you have a much better chance of having a successful upgrade.  You&#8217;ll spend more time enjoying the performance of your video card, and less time trying to figure out what&#8217;s wrong.  More importantly, you avoid being that guy on the support forums who claims &#8220;d00d tihs dr1v3rs sux0rs!!!1!  I install it and my PC cr4$h wtffffff!!!11111!!!!!  and i hv oc quad core so u know i hv l33t h4x0rzzzskillz&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/clean-video-driver-upgrades/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script to Monitor Your Internet Connection</title>
		<link>http://blog.akinstech.com/script-to-monitor-your-internet-connection</link>
		<comments>http://blog.akinstech.com/script-to-monitor-your-internet-connection#comments</comments>
		<pubDate>Sun, 27 Jan 2008 02:00:06 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/script-to-monitor-your-internet-connection/</guid>
		<description><![CDATA[Have you ever had a situation where your Internet connection drops for a few seconds, then comes back, then drops again, then comes back, and repeats randomly with no rhyme or reason? Getting your ISP to see the problem can be a real hassle as Murphy&#8217;s Law dictates that the problem will ALWAYS go away [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever had a situation where your Internet connection drops for a few seconds, then comes back, then drops again, then comes back, and repeats randomly with no rhyme or reason?  Getting your ISP to see the problem can be a real hassle as Murphy&#8217;s Law dictates that the problem will ALWAYS go away once you finally get them on the phone.  You&#8217;ll usually get the standard &#8220;looks good on our end&#8221; with no actual resolution of the problem.  Well, this script will allow you to monitor the line for hours, days, even weeks, and provide you with a timestamped activity log of exactly what was happening over that period.  Armed with this type of information, you can usually get your ISP to take notice.</p>
<p>I actually wrote this script a few years ago when one of my clients was having these very problems.  Using the log it generates, I was able to provide the ISP with meaningful numbers and exact times, and eventually they were able to correct the problem.  Since then, I&#8217;ve used it many times to check the stability of a connection.  Anyway, today on one of the tech forums, somebody asked how to monitor a flakey line.  It got me thinking about this script, so I dusted it off and posted it to the forum.  I figured while I was at it, I&#8217;d post it here as well.</p>
<p><span id="more-36"></span></p>
<p>I wrote it in VBScript, and it utilizes the WMI Ping object.  Basically it sends a single ping to a host you specify, logs the outcome with a time-stamp, then waits a predetermined delay time and repeats itself indefinitely.  If you let this script run for a full day or more, pinging every few seconds, it will give you a really good idea what might be happening with your Internet connection.</p>
<p>The script contains four values that you&#8217;ll need to edit:</p>
<p><strong>strHost = &#8220;someserver.samplehost.com&#8221;</strong>  &#8211; This is the host you want to ping.  It can be a web server, a router, a DNS server, etc.  You can specify a DNS name or an IP address.<br />
<strong>nDelay = 15</strong>  &#8211; This is how many seconds the script will wait between pings.  I find that pinging every 15 seconds is usually sufficient, although you may want to ping as often as every second in some cases.<br />
<strong>strLogFile = &#8220;C:\Comcastpinglog.txt&#8221;</strong> &#8211; This is the full path to the log you want to create.<br />
<strong>nThreshold = 75</strong> &#8211; This is the response threshold (in milliseconds).  Any ping response which is greater than this will be flagged as &#8220;SLOW&#8221; and marked as such in the log.  This makes it easy to filter these log entries later.  75ms is rather high for most broadband connections at idle.  What you&#8217;ll want to do is to let the script run for a bit and establish a baseline for what &#8220;normal&#8221; is.  For instance, my Comcast cable connection (3-6Mbit speed) usually pings at about 19-32ms.</p>
<p><strong>What should I ping?</strong><br />
If you&#8217;re having trouble with your Internet connection, a good host to ping will be the default gateway provided by your ISP.  This would represent the first physical device on the &#8220;other side&#8221; of your connection.  You can get this by checking your router&#8217;s &#8220;Connection Status&#8221; or &#8220;WAN Status&#8221; screen and noting the IP address for default gateway.  Another good one would be one of your ISP&#8217;s DNS servers.  This is also available in your router.  With either of these, you&#8217;re pinging something fairly local to your ISP, eliminating additional hops.</p>
<p>If you&#8217;re having trouble with your hosted web site or server, you&#8217;ll want to ping that server or the IP assigned to you by your provider.  Just keep in mind that you will be traversing many hops to get there, so it isn&#8217;t uncommon for your provider to pass the blame.  If you notice periods of high latency, try to back them up with a tracert output so you can show your provider where slowdown is.</p>
<p>* Note: Please be advised that some ISP&#8217;s or network admins may not appreciate you performing continuous pings to their servers.  I am not responsible for any nasty emails you might receive.  Make sure you know what you&#8217;re doing before you go pinging somebody&#8217;s else&#8217;s servers.</p>
<p><strong>Logfile Output</strong><br />
The script continuously appends to a log file with the following output:</p>
<pre>
<code>
================================================================================
1/26/2008 1:42:16 PM: PINGING HOST: [www.yahoo.com]
================================================================================
1/26/2008 1:42:16 PM: Reply from 209.131.36.158: bytes=32 time=19ms TTL=51
1/26/2008 1:42:21 PM: Reply from 209.131.36.158: bytes=32 time=20ms TTL=52
1/26/2008 1:42:26 PM: Ping Failed
1/26/2008 1:42:31 PM: Ping Failed
1/26/2008 1:42:36 PM: Ping Failed
1/26/2008 1:42:41 PM: Reply from 209.131.36.158: bytes=32 time=39ms TTL=51 SLOW
1/26/2008 1:42:46 PM: Reply from 209.131.36.158: bytes=32 time=23ms TTL=51
1/26/2008 1:42:51 PM: Reply from 209.131.36.158: bytes=32 time=31ms TTL=51 SLOW
</code>
</pre>
<p>The log is appended infinitely, so you&#8217;ll eventually want to purge the log or copy it off to avoid it growing to an unmanageable size.</p>
<p>You may later filter specific lines from the log using the following DOS commands:</p>
<pre><code>
type logfile.txt | find /I "Failed" > failed.txt
type logfile.txt | find /I "SLOW" > slow.txt
</code>
</pre>
<p><strong>Running the Script</strong><br />
Copy the VBScript code below and paste into a VBS file in your scripts directory.  Call it PingTest.vbs.  To run the script, launch it with the command &#8220;cscript PingTest.vbs&#8221;.  To kill the script, just press CTRL-C.  <strong>Note: Do NOT just double-click the script to run it!</strong>  That will cause it to launch with the wscript engine.  Since this script outputs to the console it needs to run with the cscript engine.</p>
<p>To make things easier, and ensure you always launch it with cscript, just write a simple 2-line batch file to launch the script.  (Put it in the same directory as the vbs script):</p>
<p><em>PingTest.bat</em></p>
<pre><code>
@echo off
cscript %~dp0PingTest.vbs
</code>
</pre>
<p><em>PingTest.vbs</em></p>
<pre><code>
Dim strHost, nDelay, strLogFile, nThreshold

' EDIT THESE VARIABLES TO SUIT YOUR APPLICATION
strHost = "someserver.samplehost.com" ' What do you want to ping
nDelay = 15  ' How many seconds to pause between pings
strLogFile = "C:\Comcastpinglog.txt" ' Full Name and Path of logfile
nThreshold = 75 ' Anything response over this (in ms) will be flagged as "Slow"

Dim txtLogLine, objPing, objRetStatus, rc

rc = LogLine(strLogFile,"================================================================================")
rc = LogLine(strLogFile,FormatDateTime(Now(),0) &#038; ": PINGING HOST: [" &#038; strHost &#038; "]")
rc = LogLine(strLogFile,"================================================================================")

Do While True
   txtLogLine = ""

   txtLogLine = txtLogLine &#038; FormatDateTime(Now(),0) &#038; ": "
   Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
       ("select * from Win32_PingStatus where address = '" &#038; strHost &#038; "'")

   For each objRetStatus in objPing
       If IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
          Ping = False
          txtLogLine = txtLogLine &#038; "Ping Failed"
       Else
          Ping = True
	  txtLogLine = txtLogLine &#038; "Reply from " &#038; objRetStatus.ProtocolAddress &#038; ": "
	  txtLogLine = txtLogLine &#038; "bytes=" &#038; objRetStatus.BufferSize &#038; " "
          txtLogLine = txtLogLine &#038; "time=" &#038; objRetStatus.ResponseTime &#038; "ms "
          txtLogLine = txtLogLine &#038; "TTL=" &#038; objRetStatus.ResponseTimeToLive
	  If objRetStatus.ResponseTime >= nThreshold Then
	     txtLogLine = txtLogLine &#038; " SLOW"
	  End If
       End If
   Next
   WScript.Echo txtLogLine
   rc = LogLine(strLogFile, txtLogLine)
   WScript.Sleep nDelay * 1000
Loop

Function LogLine(strFile, strLine)
   Dim objFSO, objFile
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFile = objFSO.OpenTextFile(strFile,8,True)
   objFile.WriteLine(strLine)
   objFile.Close
End Function
</code>
</pre>
<p>While this isn&#8217;t necessarily the most advanced method of detecting a slow connection, it&#8217;s surprisingly accurate in exposing periods of high latency or dropped connection.  Try it out and let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/script-to-monitor-your-internet-connection/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Samsung 245BW</title>
		<link>http://blog.akinstech.com/samsung-245bw</link>
		<comments>http://blog.akinstech.com/samsung-245bw#comments</comments>
		<pubDate>Fri, 11 Jan 2008 00:56:01 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Must Have]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/24-beautiful-inches/</guid>
		<description><![CDATA[Got me a new monitor and I must say that I am now jaded!&#160; I got the Samsung 245BW 24&#34; LCD, 1920&#215;1200 resolution.&#160; More information here. Here it is on my desktop.&#160; I set my IBM Lenovo 15.4&#34; laptop next to it for reference. In my home office I currently run 2 identical boxes; one [...]]]></description>
			<content:encoded><![CDATA[<p>Got me a new monitor and I must say that I am now jaded!&#160; I got the Samsung 245BW 24&quot; LCD, 1920&#215;1200 resolution.&#160; <a href="http://www.samsung.com/us/consumer/detail/detail.do?group=computersperipherals&amp;type=monitors&amp;subtype=lcd&amp;model_cd=LS24HUBCFV/XAA" target="_blank">More information here.</a></p>
<p>Here it is on my desktop.&#160; I set my IBM Lenovo 15.4&quot; laptop next to it for reference.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2008/01/samsung245bw.jpg" target="_blank"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="184" alt="Samsung245BW" src="http://blog.akinstech.com/wp-content/uploads/2008/01/samsung245bw-thumb.jpg" width="244" border="0" /></a></p>
</p>
<p><span id="more-40"></span></p>
<p>In my home office I currently run 2 identical boxes; one as my main machine, and the other as my development or test box.&#160; Well, they both had matching Viewsonic vx2255wmb 22&quot; wide screen LCD&#8217;s which I think are excellent monitors.&#160; They even have integrated webcams and microphones which comes in handy sometimes.&#160; Well, I was doing some rearranging in the office, and as I was moving my speakers around, I accidentally put a big scratch on the screen of the monitor&#8230;ouch! </p>
<p>So, I returned the monitor to Costco and they gladly took it back. (gotta love their return policy).&#160; Well, they don&#8217;t do exchanges there&#8230;always just a direct refund.&#160; So I told them since I was just going to turn around and buy the same monitor again to just stick the refund on a gift card to make it easier.</p>
<p>So after what was no more than a 4-minute return process, there I was back in the monitor isle, looking down below for the most pristine Viewsonic box.&#160; The plan was to grab a monitor, and then shoot two isles over and grab this set of 8 wine glasses they had.&#160; So I found me a good looking box and I headed over to grab the wine glasses.&#160; </p>
<p>Then as I was on my way back by, I caught a glimpse of the Samsung 24&quot; LCD.&#160; Now I knew it was there as I saw and acknowledged it earlier, but for some reason I didn&#8217;t pay it any attention.&#160; Honestly, I think I subconsciously deemed it out of my price range for some reason, which caused me to never really take a hard look at it.&#160; Now, anybody that knows me knows I am a huge Samsung fan.&#160; My HDTV is a Samsung and it&#8217;s an excellent TV.&#160; Any time I am advising somebody on a home theater setup, I am always pushing Samsung.&#160; But, like I said, I hadn&#8217;t considered this monitor for fear it would break the bank.</p>
<p>Anyway, as I passed back by on my way to the checkout line, from the angle I saw it it was literally DWARFING the 22&quot; Viewsonic I was about to buy.&#160; Then I looked at the price and realized that it was only $100 more than the Viewsonic!&#160; A mere $100 for those two precious inches of goodness.&#160; Not only that, the Samsung&#8217;s 1920&#215;1200 resolution would put me up there with the big boys&#8230;up from the Viewsonic&#8217;s 1680&#215;1050 resolution.</p>
<p>So after about 2.7 seconds of intense financial planning, I found myself standing in line with the Samsung in hand.&#160; And I must say that I made the right choice.&#160; This thing is big, black, and bad-ass!&#160; I almost need a bigger mouse pad due to the extra screen area.&#160; You sometimes literally turn your head looking at the left and then the right.&#160;&#160; I can now definitely run 2 &quot;full size&quot; windows side by side without reducing them to unusable widths.</p>
<p>Here is my desktop at 1920&#215;1200 showing true side by side windows.</p>
<p><a href="http://blog.akinstech.com/wp-content/uploads/2008/01/screen-1920x1200.jpg" target="_blank"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="154" alt="Screen-1920x1200" src="http://blog.akinstech.com/wp-content/uploads/2008/01/screen-1920x1200-thumb.jpg" width="244" border="0" /></a>&#160;</p>
<p>Anyway, out of the box the monitor was WAY too bright.&#160; I found I really had to crank down the contrast and brightness.&#160; It came with both of these maxed out and I turned them down to about 60/60.&#160; Furthermore, I changed the color temperature from cool to warm.&#160; I did some very slight tweaking with some color patterns, but other than that it looked perfect right out of the box.</p>
<p>Here are the pertinent specs on the monitor:</p>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td valign="top" width="200">Panel Type</td>
<td valign="top" width="200">a-si TFT/TN</td>
</tr>
<tr>
<td valign="top" width="200">Viewable Size</td>
<td valign="top" width="200">24&quot; wide</td>
</tr>
<tr>
<td valign="top" width="200">Pixel Pitch</td>
<td valign="top" width="200">.270 x .270 mm</td>
</tr>
<tr>
<td valign="top" width="200">Brightness</td>
<td valign="top" width="200">400 cd/m2</td>
</tr>
<tr>
<td valign="top" width="200">Contrast Ratio</td>
<td valign="top" width="200">3000:1 Dynamic</td>
</tr>
<tr>
<td valign="top" width="200">Response Time</td>
<td valign="top" width="200">5ms</td>
</tr>
<tr>
<td valign="top" width="200">Viewing Angle</td>
<td valign="top" width="200">160 degrees</td>
</tr>
<tr>
<td valign="top" width="200">Native Resolution</td>
<td valign="top" width="200">1920&#215;1200</td>
</tr>
<tr>
<td valign="top" width="200">Aspect Ratio</td>
<td valign="top" width="200">16:10</td>
</tr>
<tr>
<td valign="top" width="200">Maximum Color</td>
<td valign="top" width="200">16.7M</td>
</tr>
<tr>
<td valign="top" width="200">Interface</td>
<td valign="top" width="200">Analog/Digital</td>
</tr>
<tr>
<td valign="top" width="200">Inputs</td>
<td valign="top" width="200">15-pin D-sub, DVI-D</td>
</tr>
</tbody>
</table>
<p>In terms of features, the monitor has vertical adjustment, as well as tilt.&#160; However, it does NOT rotate.&#160; This isn&#8217;t really an important feature for me though.&#160; Another thing it doesn&#8217;t have is a built-in USB hub, but again, I already have USB ports on the front of both computers, so not important.&#160; This is a nice, high quality monitor with a stunning picture, and nothing else. </p>
<p>While I&#8217;m not a huge gamer or anything, I do like to play Counterstrike or Crysis once or twice a week.&#160; I must say that both of these games, especially Crysis, look absolutely stunning on this monitor!&#160; You haven&#8217;t lived until you&#8217;ve crawled on your stomach through the brush on the island in Crysis in full 1920&#215;1200 splendor. </p>
<p>Another thing this monitor does really well is TV and Videos.&#160; I run SageTV in my house as my sole whole-house DVR solution, and therefore I can watch TV or recordings right on any computer.&#160; At 24&quot; this thing makes a really nice office Television.&#160; While the HD content is stunning, even the Standard Definition stuff looks really good.&#160; The other day I threw on an episode of Jericho from DVD on this thing and that looked really good too.</p>
<p>One thing to consider is that if you&#8217;re upgrading from a lower resolution (such as 1440&#215;900 or 1680&#215;1050), moving to 1920&#215;1200 can be quite a strain on your video card.&#160; I noticed right away that some applications were a little more strained than they normally are.&#160; So if you&#8217;re looking at going with a monitor like this, make sure your video card has the power to handle it.</p>
<p>After working with this thing for the last month or so, the &quot;wow&quot; factor still hasn&#8217;t necessarily gone away.&#160; I still find myself sitting at it going &quot;&amp;$@# that&#8217;s a big-ass monitor!&quot; <img src='http://blog.akinstech.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; But at the same time it has turned me into a monitor snob.&#160; Whenever I use my developer machine, I somehow feel like I&#8217;m &quot;settling&quot;, what with its paltry 22&quot; screen.&#160; And my 21&quot; widescreen at work?&#160; It&#8217;s all I can do to even read the text on that thing. </p>
<p>Anyway, I highly recommend the Samsung 245BW 24&quot; LCD for those looking for a relatively inexpensive 24&quot; monitor.&#160; At $399 (at the time of this writing) it&#8217;s an excellent value.&#160; But beware&#8230;you wont be the same afterwards!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/samsung-245bw/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Handy Admin Toolbar</title>
		<link>http://blog.akinstech.com/creating-a-handy-admin-toolbar</link>
		<comments>http://blog.akinstech.com/creating-a-handy-admin-toolbar#comments</comments>
		<pubDate>Mon, 26 Nov 2007 19:00:22 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[How it should be done]]></category>
		<category><![CDATA[Must Have]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/creating-a-handy-admin-toolbar/</guid>
		<description><![CDATA[While fooling around with Camstudio the other day, I thought &#8220;Hmmm, why don&#8217;t I actually make a video about something useful?&#8221; So I thought about it for a bit, and decided to pick something that I consider really basic, but something many administrators and PC experts overlook. It&#8217;s a custom toolbar to hold your common [...]]]></description>
			<content:encoded><![CDATA[<p>While fooling around with <a href="http://camstudio.org/">Camstudio</a> the other day, I thought &#8220;Hmmm, why don&#8217;t I actually make a video about something useful?&#8221;  So I thought about it for a bit, and decided to pick something that I consider really basic, but something many administrators and PC experts overlook.  It&#8217;s a custom toolbar to hold your common administrative shortcuts.  While the actual toolbar creation is nothing earth-shattering, I think the idea of organizing administrative functions into such a toolbar is.  I know this because time and time again I am asked &#8220;How did you get that toolbar down there?&#8221;</p>
<p>Therefore, here you go&#8230;a short crude video narrated by yours truly&#8230;on how to create an Admin Toolbar, and what I think you should put in it.  If you can manage to make it through all my &#8220;ummms&#8221; and &#8220;uhhhs&#8221;, and the fact that I&#8217;m a bit nasally from a cold, you just might find it semi-useful.  Just remember that I did this without any rehearsal, and did it in a single 15-minute take&#8230;so if it sucks, don&#8217;t send me hate mail!  Who knows, maybe one of these days I&#8217;ll do another one of these on a more interesting topic, with a bit more preparation.</p>
<p><a href="http://www.akinstech.com/filelib/videos/AdminToolbar.wmv">Video &#8211; Creating a Handy Admin Toolbar </a></p>
<p>Oh, and by the way, if you ever need to put together a PC training video or capture activity on your computer into video, I highly recommend <a href="http://camstudio.org">CamStudio</a>.  It&#8217;s a free open source program and it works excellent.  Far better than anything out there in my opinion.  Install it and you&#8217;ll be making videos in minutes.  Check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/creating-a-handy-admin-toolbar/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.akinstech.com/filelib/videos/AdminToolbar.wmv" length="39375818" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>Happy Endings</title>
		<link>http://blog.akinstech.com/happy-endings</link>
		<comments>http://blog.akinstech.com/happy-endings#comments</comments>
		<pubDate>Mon, 19 Nov 2007 21:42:58 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Power User]]></category>
		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://blog.akinstech.com/happy-endings/</guid>
		<description><![CDATA[In this article I&#8217;m going to show you how to positively and directly kill unresponsive applications using some standard command-line tools. I&#8217;ll also present you with a couple batch files to make this process as easy as possible. Armed with these commands and scripts, you will be able to quickly end tasks the right way, [...]]]></description>
			<content:encoded><![CDATA[<p>In this article I&#8217;m going to show you how to positively and directly kill unresponsive applications using some standard command-line tools.  I&#8217;ll also present you with a couple batch files to make this process as easy as possible.  Armed with these commands and scripts, you will be able to quickly end tasks the right way, take control over your system, and say goodbye to unresponsive applications.</p>
<p><span id="more-37"></span></p>
<p>As always, I like to get into the who, what, why, where, how&#8230;but if you just want the scripts, skip down to <strong>Automating It</strong> down below.</p>
<p><strong>The Scenario</strong><br />
Anybody who&#8217;s been using Windows for any amount of time knows that lockups and application hangs are a fact of life.  When an application becomes unresponsive, it&#8217;s not always practical to just reboot or reset your system.  For instance you might be working on an important document in Microsoft Word, but at the same time you have several instances of Internet Explorer (IE) open doing research for that document.  You go and innocently click on a link on the web and next thing you know, IE is now locked up!</p>
<p>No problem&#8230;you figure you&#8217;ll just close the IE window&#8230;you&#8217;re no stranger to that.  So you click the &#8220;X&#8221; in the upper right corner and problem solved, right?  Well, depending on the current price of pork bellies and the orientation of various celestial bodies, this may or may not work.  It thinks about it for a bit&#8230;and guess what?  Now your whole computer is unresponsive.  So what next?  You now realize that you haven&#8217;t saved your Word Document and you&#8217;re going to lose several hours of work if you can&#8217;t get your computer back.  So what do you do?</p>
<p>Well, most people will do this:  Press <em>CTRL-ALT-DEL</em> and then click on Task Manager.  Slowly it comes up.  Next you find what you think is the offending instance of IE, and you click End Task.  It thinks about it for a bit, and finally you get the dialog telling you that the program is not responding.  So you click End again, only to have this repeat a few more times.  In desperation, you press <em>CTRL-ALT-DEL</em> all over again, figuring you&#8217;ll try again.  Nothing happens.  You do this several times, creating multiple task manager instances, none of which are responding, and further compounding the problem.  Realizing defeat you finally just hit the reset button and hope you can recover your word document from a temp file.</p>
<p><strong>The Problem</strong><br />
When your PC or an application is unresponsive, the last thing you want to do is open another window, or perform another user interface action.  Most application lockups with IE, Outlook, Word, or other applications are caused by an ill-behaved user interface element.  So when you bring up the task manager (which is another user interface dialog) and you start clicking buttons, you are ADDING to the problem.  What you need is to somehow issue that &#8220;End Task&#8221; command without opening more windows and dialogs, and in a way that avoids creating any additional activity on the machine.  Fortunately they invented a thing called the command line!</p>
<p><strong>The Solution</strong><br />
Windows XP, Server 2003, Vista, and Server 2008 all come standard with 2 command line utilities that allow you to list and end tasks very easily and quickly without using the dreaded Task Manager.  These commands have been around for years, yet I am surprised how many network administrators and PC support people have never heard of them.  They are tasklist and taskkill, and once you see how well they work, you&#8217;ll wonder why you didn&#8217;t learn them sooner.</p>
<p><strong>How To Run A Command</strong><br />
First off, if you are to ever end tasks quickly, you need to know how to get to the run command quickly.  The proper way is <em>Windows-Key+R</em>.  Let&#8217;s all say it together.  &#8220;W-i-n-d-o-z-e-K-e-e-e-e-A-r-r-r-r&#8221;.  Good!    Don&#8217;t ever, ever, ever, EVER click &#8220;Start, Run&#8221; again, even in your normal day to day usage.  The command is <em>Windows-Key+R</em> from now on.  Got it?   Try it a few times and get used to this.  <em>Windows-Key+R</em> should become second nature.  In fact when you&#8217;re a power user, it is how your launch just about everything.</p>
<p>Now you might be wondering &#8220;Why is clicking Start,Run so bad?&#8221;  Well, first off it involves the mouse, and the mouse is for pussies.  Second, it is slower.  If a bomb was counting down with 5 seconds left, would you be able to click Start,Run then move your hands back to the keyboard and type &#8220;defuse.exe /force&#8221; and save humanity?  Your only chance would be by using <em>Windows-Key+R</em>.</p>
<p>But all kidding aside, and most importantly for our purposes here, when you click the Start button, all hell breaks loose.  It causes Windows to access the registry and query about 10 registry keys asking &#8220;Where on the hard disk is the Start Menu located?&#8221;, then once it gets the path it executes a DLL and then queues up a read on the hard disk, collecting the various shortcut files in your start menu.  As it reads each one, it follows the path to each shortcut to pull the icon for it.  Then it calls a function which saves the desktop space underneath where it is about to draw the Start Menu.  Then it calls the function which animates the start menu&#8230;and&#8230;and.  Get the picture?  When you click the Start button, you give your already unresponsive computer MORE to do.  So don&#8217;t do it.</p>
<p><strong>Two Easy Examples</strong><br />
So now that you know the proper way to launch a run command, let&#8217;s try a quick example.  Hit <em>Windows-Key+R</em>, type &#8220;calc&#8221; and hit enter.  Then do it again, and again, and again until you have about 8 copies of calculator running.  Now lets pretend those instances were locked up and let&#8217;s end them using the taskkill command.</p>
<p>Press <em>Windows-Key+R</em> and type the following command (followed by enter):</p>
<pre><code>taskkill /F /IM calc.exe</code></pre>
<p>You should see all instances of calculator end immediately.  If you&#8217;ve ever ended tasks with Task Manager, I&#8217;m sure you&#8217;ve never seen tasks end that quickly and abruptly.</p>
<p>Let&#8217;s try it again, this time with Internet Explorer.  Launch IE several times by hitting <em>Windows-Key+R</em>, typing iexplore, followed by enter.  Repeat several times until you have 6-8 copies of IE running.</p>
<p>Now in the last example we specified the full executable for calculator, &#8220;calc.exe&#8221;.  However, taskkill will also accept wildcards, so you really only need to specify enough of the executable to distinguish it.  To kill the IE sessions, use the following command:</p>
<pre>
<code>taskkill /F /IM iexp*</code>
</pre>
<p>Again, you should see all instances of IE end immediately.  Now, by specifying &#8220;iexp*&#8221; we are telling it &#8220;Kill any tasks who&#8217;s executable begins with iexp&#8221;.  So, if for instance you had some crappy Apple program running (oops, sorry for being redundant)&#8230;I mean you had some Apple program running called &#8220;iexpert.exe&#8221; it would also kill that program.  However, in the case of an Apple program, you were probably doping yourself a favor.</p>
<p>Seriously though, where I find the wildcard to be helpful, besides shortening the command, is in killing a family of processes with different but similar names.  For instance, if you&#8217;ve ever used Yahoo Music Service (even WORSE than iTunes if that is possible), it launches three different processes: YahooUnlimited, YahooMusicENgine, and YahooTray.  These things lockup pretty regularly and it&#8217;s really nice to knock them out with a simple &#8220;taskkill /F /IM Yahoo*&#8221;.</p>
<p><strong><br />
Run Command vs Command Prompt</strong><br />
Now, I had you try these examples from the Run command to demonstrate the method you would likely use in the event of a very unresponsive system.  In the case of a system that is locked up solid, the Run command could be your only option&#8230;.so we started with that in the first example.</p>
<p>However, using the command prompt (DOS prompt as some call it) to launch these commands gives you a LOT more information via return codes, error messages and reporting.  So keep that in mind.  Ideally, you do want to try and run these commands from a command prompt so you can actually see what&#8217;s going on.</p>
<p>For the rest of the examples, I&#8217;ll assume you&#8217;re running these from the command prompt, but know that they can be run either way depending on the situation.</p>
<p><strong>More taskkill Options</strong><br />
Now suppose we go back to our IE example where it becomes unresponsive.  And let&#8217;s assume that the link you clicked was a PDF link.  Well, IE launched an instance of Adobe Reader INSIDE Internet Explorer, which then locked up (which would have never happened <a href="http://blog.akinstech.com/adobe-outfoxed/">had you converted to the much better, more stable Foxit</a>, but that&#8217;s beside the point).  So you run your taskkill command as follows:</p>
<pre><code>taskkill /F /IM iexp*</code></pre>
<p>&#8230;and IE dies.  But your computer is still locked up.  What gives?  Well, maybe it wasn&#8217;t IE technically that was hung&#8230;remember that IE launched the Adobe process, and perhaps THAT is what&#8217;s locked up.  So if you know that a process has launched other processes (called &#8220;child&#8221; processes) you can use the &#8220;/T&#8221; switch (Tree Kill) parameter to also kill any child processes.  So back to the IE example&#8230;if you want to kill IE, as well as any child processes of IE, you would use this command:</p>
<pre><code>taskkill /F /T /IM iexp*</code></pre>
<p>Note that in our examples we have been specifying the &#8220;/F&#8221; (force) switch.  I find that in most cases I actually do want to force the application to end.  If you don&#8217;t specify the force parameter, it will cause the application to send signals indicating that a shutdown of the application has been initiated.  Depending on the situation this can be good or bad.  Remember, our PC is locked up and we want to try to avoid extra activity like this.  But on the other hand, if we are killing Outlook and we have a half-written email we need to save, we might want to try it first without the force parameter. You just need to decide what is more important to you&#8230;getting the hung application shut down or potentially saving your work in that application.  Most of the time, though, I want the application gone, so I use the /F switch.</p>
<p><strong>Killing By Process ID</strong><br />
So far, we have shutdown ALL instances of an application.  But suppose we only want to shut down one instance.  In this case we want to kill by Process ID (PID).  The taskkill command has an option for killing by process ID.  Assuming we wanted to kill the process with ID &#8220;892&#8243;, the command would be:</p>
<pre><code>taskkill /F /PID 892</code></pre>
<p>But how do you know the Process ID for a process?  Well, our first instinct is to press <em>CTRL-ALT-DEL</em> and pull up the Task Manager, which incidentally, does provide us with the Process ID for each task.  But like before, we want to try and avoid this when the system is in an unresponsive state.</p>
<p><strong>Listing Tasks from the Command Prompt</strong><br />
Open a command prompt by bringing up the run command and typing &#8220;cmd&#8221; followed by Enter.</p>
<p>Now from the command prompt, simply type the following command:</p>
<pre><code>tasklist</code></pre>
<p>You should see output that looks similar to this.  Note the process ID is listed in the second column.</p>
<p><em>Output from tasklist command</em></p>
<pre><code>
Image Name                   PID Session Name     Session#    Mem Usage
========================= ====== ================ ======== ============
System Idle Process            0 Console                 0         28 K
System                         4 Console                 0        236 K
smss.exe                     604 Console                 0        392 K
csrss.exe                    652 Console                 0      3,408 K
winlogon.exe                 676 Console                 0      2,892 K
services.exe                 720 Console                 0      4,772 K
lsass.exe                    732 Console                 0      7,748 K
svchost.exe                  888 Console                 0      5,364 K
svchost.exe                  964 Console                 0      4,640 K
svchost.exe                 1060 Console                 0     31,188 K
svchost.exe                 1116 Console                 0      3,504 K
svchost.exe                 1264 Console                 0      9,176 K
spoolsv.exe                 1436 Console                 0      5,512 K
bgsvcgen.exe                1752 Console                 0      1,688 K
MDM.EXE                     1852 Console                 0      3,412 K
explorer.exe                1948 Console                 0     12,180 K
nTuneService.exe            2040 Console                 0      3,008 K
nvsvc32.exe                  188 Console                 0      3,984 K
svchost.exe                  268 Console                 0      4,152 K
alg.exe                     1528 Console                 0      3,624 K
RTHDCPL.EXE                  596 Console                 0     23,408 K
rundll32.exe                 636 Console                 0      6,692 K
E_FATIAEA.EXE               1016 Console                 0      2,672 K
ctfmon.exe                  1816 Console                 0      4,672 K
usnsvc.exe                  2700 Console                 0      2,532 K
svchost.exe                 3584 Console                 0      3,496 K
firefox.exe                 2708 Console                 0     80,720 K
notepad.exe                 3144 Console                 0      1,008 K
notepad.exe                 3968 Console                 0      1,728 K
cmd.exe                     2208 Console                 0      2,700 K
utilman.exe                 2560 Console                 0      3,320 K
tasklist.exe                2008 Console                 0      4,468 K
wmiprvse.exe                4028 Console                 0      5,684 K
</code></pre>
<p>Here are some other variants of the command:</p>
<pre><code>
tasklist /V      (Verbose Output.  Useful for identifying specific instances of a process.)
tasklist | find /I "iexp" (Show me only the processes that begin with "iexp")*
</code></pre>
<p>* Note: The tasklist command has a filter option (/FI) which allows filtering based on certain criteria.  And while it&#8217;s numerical comparisons are really nice, especially for listing high CPU utilization, I have found that its string filtering capability is somewhat limited in that it must do exact matching.  However, by piping the output through the find command, as I have done here, you can filter on partial string matches.  Just something to keep in mind.</p>
<p>The tasklist command provides you with all the same information in Task Manager, with a lot more detail about the processes.  The following two commands can be very useful in hunting down specific DLL&#8217;s or services associated with tasks:</p>
<pre><code>
tasklist /SVC     (Display the service(s) associated with each process)
tasklist /M       (Display the DLL(s) associated with each process)
</code></pre>
<p>While there are better tools for doing hardcore process analysis (Process Explorer from SysInternals is my favorite) remember that this is a built-in Windows command and can be quite helpful when the other tools aren&#8217;t available.</p>
<p><strong>Remote Task Killing</strong><br />
This is where things get really fun.  Now suppose your system is so locked up that the entire user interface is completely unresponsive.  You can&#8217;t pull up the run command, <em>CTRL-ALT-DEL</em> doesn&#8217;t work, you can&#8217;t click anything&#8230;absolute gridlock.  Yet you see the hard drive light flashing away and you know that SOMETHING is happening.  If only you could get at it.    Well it&#8217;s important to remember that our Windows boxes are actually multi-user systems.  While you are logged in as &#8220;Joe&#8221; there are other &#8220;users&#8221; logged into your system in the form of system and service accounts.  So while the user interface for Joe is locked up solid, it&#8217;s HIGHLY likely that your system is still breathing at a lower level. If only you could tell it what to do&#8230;</p>
<p>Well, fortunately the taskkill and tasklist commands will work remotely.  So you can go to another computer on your network, and kill tasks from there.  How sweet is that!?!  In fact, I have found that it works so well that this is primarily how I kill tasks.  Even if I&#8217;m working on Workstation A, and something locks up, I&#8217;ll go to Workstation B and remotely kill the task.  I&#8217;ve found that in the case of user interface related lockups, this actually works better than killing the task locally.</p>
<p>This is also a lifesaver when doing support over the phone.  I can be talking to a user who has a hung application, view their tasks with tasklist, then kill the task with taskkill right before the user&#8217;s eyes.  This is a hell of a lot easier than trying to walk that user through killing the task themselves.  Also keep in mind that many times a standard user may not have access to the command prompt, the Run Command, or even have the appropriate permissions to kill a task.  So killing tasks remotely solves a lot of problems.</p>
<p>The only requirements are that the machines can talk (you must have all the appropriate name resolution configured), and that you have administrator access on the machine you are ending tasks on.  Also, be aware that by default, the Windows Firewall could be blocking RPC requests on the remote computer.  So either disable the firewall, or configure to allow RPC.  In production domains, I setup a rule on the Domain Firewall Profile which allows remote administration.</p>
<p>Here are some example commands for listing and ending tasks remotely:</p>
<pre>
<code>
tasklist /V /S computername                 (List the tasks on a remote computer)
taskkill /S computername /F /IM iexplore*   (Kill all instances of "iexplore*" on remote computer)
taskkill /S computername /F /PID 3280       (kill process with ID 3280 on remote computer)
</code>
</pre>
<p>Here is what it looks like when I remotely kill firefox on the computer &#8220;sidekick&#8221;</p>
<pre>
<code>

D:\>taskkill /S sidekick /F /IM firefox*
SUCCESS: The process "firefox.exe" with PID 1032 has been terminated.

D:\>
</code>
</pre>
<p><strong>Automating It</strong><br />
As useful as these commands are, there are some steps we can take to make this even easier.  It might seem clear now, but I can guarantee that in a week you&#8217;ll try one of these commands and you&#8217;ll forget the syntax.  I use these commands all the time, and even I admit that it isn&#8217;t the easiest syntax to remember.  So of course we&#8217;re going to write a couple batch files to make this easier.</p>
<p>The first one is &#8220;GetTasks.bat&#8221; and as the name implies it gets the tasks from either the local machine or a remote machine, if you specify one.  But it also saves those tasks to a text file and then launches that text file in WordPad.  I prefer Wordpad for this because it defaults to no word-wrap, but feel free to change it to notepad, some other editor, or whatever you prefer.  The syntax of the batch file is as follows:</p>
<pre>
<code>
gettasks                  (get tasks from local machine)
gettasks GamerRig         (get tasks from remote computer named "GamerRig")
</code>
</pre>
<p>GetTasks.bat</p>
<pre>
<code>
@echo off

if exist %temp%\tasks.txt del %temp%\tasks.txt

if "%1"=="" goto local

:remote
tasklist /V /S %1 > %temp%\tasks.txt
goto end

:local
tasklist /V > %temp%\tasks.txt

:end
write %temp%\tasks.txt
</code>
</pre>
<p>The next one is KillTask.bat and it forcefully kills tasks using the name or wildcard you specify.  If you specify a computer name it will kill the tasks on that computer.  If you don&#8217;t specify a computer name, it assumes the local computer. Here are some usage examples:</p>
<pre>
<code>
killtask Yahoo*               (Kill any tasks on the local computer starting with the word "Yahoo")
killtask JanesBox winword.exe (Kill any winword.exe tasks on the computer JanesBox)
</code>
</pre>
<p>GetTasks.bat</p>
<pre>
<code>
@echo off

if "%2"=="" goto local

:remote
taskkill /S %1 /F /IM %2
goto end

:local
taskkill /F /IM %1

:end
</code>
</pre>
<p>Using your favorite text editor (Notepad, Notepad++, PSPad, etc) highlight the code in each of these and save to their respective batch files (give them a &#8220;.BAT&#8221; extension) and save them in your Scripts directory.  If you followed my suggestions in <a href="http://blog.akinstech.com/script-setup">Setting Up Your System For Scripts</a> you should have this.  Once you do that these new commands will be available to run at any command prompt or the Run command.</p>
<p>Now if we go back to our original scenario with IE locked up, armed with our new batch file, killing IE is as simple as <em>Windows-Key+R</em>, &#8220;killtask iexp*&#8221;.  Or we can go to another machine and kill it with Windows-Key+R, &#8220;killtask computer iexp*&#8221;  It doesn&#8217;t get any easier than that!</p>
<p>Hopefully this article has shown you some of the ways you can put these standard, but relatively unknown Windows commands to use in your own day-to-day tasks.  By knowing the how these commands work, knowing how to launch them effectively, and using the batch files supplied, it should definitely reduce or even eliminate those frustrating episodes where you&#8217;re frantically banging on CTRL-ALT-DEL trying to get your system to listen to you.</p>
<p>As always, feel free to share any comments, suggestions, corrections, or flat-out disagreements with me.  Also, I didn&#8217;t go into any detail about how the batch files work, so if you have any questions about them, or suggestions on how to improve them, drop me a line.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.akinstech.com/happy-endings/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

