<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Ardamis</title>
	
	<link>http://www.ardamis.com</link>
	<description>Ardamis is a blog about web development, troubleshooting, and technology in general.</description>
	<lastBuildDate>Mon, 07 May 2012 02:50:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ardamis" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ardamis" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>GameScience Precision Dice</title>
		<link>http://www.ardamis.com/2012/05/06/gamescience-precision-dice/</link>
		<comments>http://www.ardamis.com/2012/05/06/gamescience-precision-dice/#comments</comments>
		<pubDate>Mon, 07 May 2012 02:50:33 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[Materialism]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2146</guid>
		<description><![CDATA[I want this Smoke Quartz 7-piece precision dice set from GameScience.]]></description>
			<content:encoded><![CDATA[<p>So.  Apparently, I&#8217;ve been using crap dice my entire life.  Well, no longer.</p>
<p>After watching <a href="http://en.wikipedia.org/wiki/Lou_Zocchi">Lou Zocchi</a>&#8216;s <a href="http://www.gamescience.com/">sale pitch for sharp-edged dice</a>, which he markets as &#8216;precision&#8217; dice, I&#8217;m sold on the idea that most of the dice I&#8217;ve used were junk.</p>
<div id="attachment_2150" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.ardamis.com/wp-content/uploads/2012/05/gamescience-precision-dice1.jpg"><img src="http://www.ardamis.com/wp-content/uploads/2012/05/gamescience-precision-dice1.jpg" alt="" title="GameScience Smoke Quartz Precision 7-Piece Dice Set" width="500" height="280" class="size-full wp-image-2150" /></a><p class="wp-caption-text">GameScience Smoke Quartz Precision 7-Piece Dice Set</p></div>
<p>Now, I can&#8217;t wait to shell out $15 for this <a href="http://www.gamestation.net/Products_2/GameScience-Precision_7">Precision Gem 7 Piece Dice Set</a>, including d6, d4, d10 (0-9), d12, d20, d10 (00-90) and d8, in Smoke Quartz with white, hand-inked numbers, manufactured by GameScience in the USA.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/6zQQZQiVMeU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/05/06/gamescience-precision-dice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An SEO comparison of ardamis.com and ardamis.gr</title>
		<link>http://www.ardamis.com/2012/05/05/an-seo-comparison-of-two-ardamis-domains/</link>
		<comments>http://www.ardamis.com/2012/05/05/an-seo-comparison-of-two-ardamis-domains/#comments</comments>
		<pubDate>Sat, 05 May 2012 13:13:49 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Nonsense]]></category>
		<category><![CDATA[Web Site Dev]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2078</guid>
		<description><![CDATA[I do some research into the domains ardamis.com and ardamis.gr to try to determine why the Greek site outranks the .com site, even for searchers within the United States.]]></description>
			<content:encoded><![CDATA[<p>For years, ardamis.com has had a Google rankings nemesis in ardamis.gr.  For much of the time that I&#8217;ve spent watching the results for the search phrase &#8216;ardamis&#8217;, ardamis.com has consistently ranked #1, and ardamis.gr typically landed in second or third place. But at some point in 2011, and my recollection is that this was occurring pre-Panda, ardamis.gr moved to the top spot and has stayed there since. </p>
<div id="attachment_2079" class="wp-caption aligncenter" style="width: 530px"><a href="http://www.ardamis.com/wp-content/uploads/2012/03/ardamis-google-search-results.png"><img src="http://www.ardamis.com/wp-content/uploads/2012/03/ardamis-google-search-results.png" alt="Google search results for ardamis on March 15, 2012" title="Google search results for ardamis on March 15, 2012" width="520" height="492" class="size-full wp-image-2079" /></a><p class="wp-caption-text">Google search results for ardamis on March 15, 2012</p></div>
<p>The top 10 results returned for &#8216;ardamis&#8217; as of March 15, 2012, while not signed in to Google, connecting from Chicago, IL, using IE9:</p>
<ol>
<li>http://www.ardamis.gr/</li>
<li>http://www.ardamis.gr/index.php?lang=en</li>
<li>http://www.ardamis.com/</li>
<li>http://www.ardamis.com/2005/08/11/xampp-apache-namevirtualhost/</li>
<li>https://twitter.com/#!/ardamis</li>
<li>http://www.tripadvisor.com/Hotel_Review-g285708-d274279-Reviews-Ardamis_Hotel-Monemvasia_Peloponnese.html</li>
<li>https://github.com/ardamis</li>
<li>http://www.greeka.com/peloponnese/monemvasia/hotels/monemvasia-ardamis/index.html</li>
<li>http://www.linkedin.com/company/ardamis</li>
<li>http://www.facebook.com/pages/ardamis/90788288272</li>
</ol>
<p>I can&#8217;t really explain why a post from 2005 on configuring a setting in Apache would be the second best page on the site, but I guess I&#8217;ll take it. My properties do pretty well, for what isn&#8217;t a highly competitive phrase.  Items related either to ardamis.com or me personally appear in positions 3, 4, 5, 7, 9, 10.</p>
<p>I&#8217;ve done some comparing of these two domains, and I am still unsure why Google is currently favoring ardamis.gr.</p>
<h2>Location</h2>
<p>I felt pretty confident that geography and Google&#8217;s focus on local search would mean that North American users would be returned results that favored ardamis.com, so long as they were not obviously searching for travel information about Greece.  But this isn&#8217;t proving to be a safe assumption.  Even more strange is that it&#8217;s the Greek language version of the page that Google is ranking first, even before the English language version.  This promotion of a foreign-language page is very odd.</p>
<h2>Metrics</h2>
<p>Google Toolbar Page Rank (I know, I know, but it&#8217;s one of many metrics I&#8217;ll use) shows ardamis.com getting a 5 and ardamis.gr getting a 3.  I won&#8217;t make too much of this, but I wanted to point out that the toolbar PR is not equal.</p>
<p>I ran the list of URLs on the first page of Google through the <a href="http://www.opensiteexplorer.org/">Open Site Explorer</a> to get a better sense of how strong the pages and domains were, and ardamis.com comes out on top.</p>
<table>
<thead>
<tr>
<td>URL</td>
<td>Page Authority</td>
<td>Domain Authority</td>
<td>Links</td>
</tr>
</thead>
<tbody>
<tr>
<td>www.ardamis.gr/</td>
<td>45.29</td>
<td>34.3</td>
<td>433</td>
</tr>
<tr>
<td>www.ardamis.gr/index.php?lang=en</td>
<td>23.65</td>
<td>34.3</td>
<td>33</td>
</tr>
<tr>
<td>www.ardamis.com/</td>
<td>74.06</td>
<td>69.38</td>
<td>149621</td>
</tr>
<tr>
<td>www.ardamis.com/2005/08/11/xampp-apache-namevirtualhost/</td>
<td>42.18</td>
<td>69.38</td>
<td>29</td>
</tr>
</tbody>
</table>
<p>As the table shows, the home page at ardamis.com has significantly more Page Authority than the home page at ardamis.gr, the ardamis.com domain has more Domain Authority than ardamis.gr, and ardamis.com has 300 times the number of inbound links.  (Although, the vast majority of inbound links come from footer links in the various WordPress and Plogger themes I&#8217;ve designed.  See below.)</p>
<h2>Author attribution</h2>
<p>The pages on ardamis.com all contain verified authorship markup linking them to my Google Plus profile, and I get my profile picture next to my pages in the results.</p>
<p>I don&#8217;t detect any author markup on ardamis.gr.</p>
<h2>Structured markup</h2>
<p>The pages on ardamis.com contain structured markup (HTML5 microdata as described at schema.org and hCard microformat).  The <a href="http://www.google.com/webmasters/tools/richsnippets?url=www.ardamis.com">Rich Snippets Testing Tool</a> returns no warnings for ardamis.com.  Rich snippets from the pages at ardamis.com are displayed as part of the page data in Google&#8217;s results.</p>
<p>The page at ardamis.gr does not contain authorship or rich snippet markup.</p>
<h2>Site links</h2>
<p>In July of 2009, ardamis.com had a <a href="http://www.ardamis.com/2009/07/01/toolbar-page-rank-of-6-and-3-one-line-sitelinks/">Toolbar Page Rank of 6 and 3 one-line sitelinks</a>, before later disappearing.  Then, in October of 2010, <a href="http://www.ardamis.com/2010/10/17/sitelinks-are-back-on-ardamis/">the sitelinks returned</a> for awhile before disppearing again.  I last noticed the <a href="http://www.ardamis.com/2011/01/09/sitelinks-gone-and-back-again/">sitelinks in January of 2011</a>.</p>
<p>(I would point out that the site still shows sitelinks when searching for my name.)</p>
<h2>Inbound links</h2>
<p>I&#8217;ve developed and released a WordPress theme and a few Plogger themes, and put links back to ardamis.com and the theme&#8217;s post in the footer.  These links have helped the home page gain nearly 2 million inbound links, with the Apricot WordPress theme&#8217;s page gaining nearly 1.5 million and the most popular Plogger theme&#8217;s page gaining just over 70,000.  That&#8217;s a lot of links.</p>
<h2>Page Speed</h2>
<p>Google&#8217;s <a href="https://developers.google.com/pagespeed/">Page Speed Online tool</a> awards <a href="https://developers.google.com/pagespeed/#url=www.ardamis.com&#038;mobile=false">ardamis.com a Page Speed Score of 96 (out of 100)</a>, while ardamis.gr gets a score of 68 (out of 100).</p>
<p>I have put quite a bit of effort into optimizing the performance, and I&#8217;m pretty happy with a 96.</p>
<h2>Panda</h2>
<p>Post-Panda, I combed through ardamis.com and weeded out the posts that I was unsure about.</p>
<h2>Other domains</h2>
<p>I also own ardamis.net and ardamis.org, and have one-page placeholders at these domains with links back to ardamis.com</p>
<h2>Conclusion</h2>
<p>At this point, I wonder if ardamis.com is suffering a penalty somewhere.  Maybe all of those footer links are actually hurting the site.</p>
<p>Or maybe the combination of a <a href="http://en.wikipedia.org/wiki/Country_code_top-level_domain">country code top-level domain</a> and a real geographic location is just incredibly powerful when compared to a random word attached to a .com domain.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/NxduOpX-r6w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/05/05/an-seo-comparison-of-two-ardamis-domains/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows RUNAS error messages</title>
		<link>http://www.ardamis.com/2012/05/04/windows-runas-error-messages/</link>
		<comments>http://www.ardamis.com/2012/05/04/windows-runas-error-messages/#comments</comments>
		<pubDate>Sat, 05 May 2012 02:08:54 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2131</guid>
		<description><![CDATA[Windows' RUNAS error 1327 may be due to an expired password.]]></description>
			<content:encoded><![CDATA[<p>I was running up against a strange error message while trying to use Windows&#8217; RUNAS command to run VBScript as a different user.  In my case, the different account was an administrative account, and the box had never been logged into with that account.</p>
<p>The error message, which appeared when I submitted the correct password for the account:</p>
<blockquote><p>RUNAS ERROR: Unable to run &#8211; notepad.exe<br />
1327: Logon failure: user account restriction. Possible reasons are blank passwords not allowed, logon hour restrictions, or a policy restriction has been enforced.</p></blockquote>
<p>It&#8217;s a tricky error message, because submitting a blank password for a user with a password will return a different error (see below).  Some Googling around revealed that error 1327 may be due to an expired password on an otherwise valid account, or the user has no password set (runas requires a password).</p>
<p>Compare it to the error that comes from actually submitting a blank password:</p>
<blockquote><p>RUNAS ERROR: Unable to run &#8211; notepad.exe<br />
1326: Logon failure: unknown user name or bad password.</p></blockquote>
<p>Error 1326 is likely caused by trying invoke runas for a non-existent user, or an incorrect password was provided for a valid user.</p>
<p>As it turns out, the password for the account I was trying to use had expired, although I was able to continue using it with runas on another box without issue.  I RDP&#8217;d onto the machine where I was having the problems and changed the password when prompted.  Once the password was changed, I logged back in as my normal user account and was able to use runas with the administrative account.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/a-apvIFUQao" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/05/04/windows-runas-error-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript detection/redirection if an intranet site is accessible</title>
		<link>http://www.ardamis.com/2012/04/04/javascript-detection-redirection-if-intranet-site-is-accessible/</link>
		<comments>http://www.ardamis.com/2012/04/04/javascript-detection-redirection-if-intranet-site-is-accessible/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 03:33:29 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Nonsense]]></category>
		<category><![CDATA[Web Site Dev]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2105</guid>
		<description><![CDATA[An example web page demonstrating how JavaScript can be used to detect whether a browser is on a company network by loading an internal resource.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an example script demonstrating how a publicly accessible page can leverage JavaScript to detect whether a machine is on a corporate intranet and then redirect the browser to an intranet page.</p>
<p>In the example, http://alephstudios.com acts as the corporate intranet site that is not accessible from outside the company&#8217;s network.  The page itself would be hosted on a publicly accessible site, which is http://www.ardamis.com in the example, so that it can be accessed both from within and outside the corporate network.</p>
<p>JavaScript is used to load an image from a location on the company intranet.  If successful, it establishes that the machine is on the internal network.  The browser can then be redirected via JavaScript to an intranet page.  Otherwise, the browser is redirected to an Internet page.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Intranet Detection Script&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--

var internalURL = 'http://alephstudios.com';
var publicURL = 'http://www.ardamis.com';
var detectionCounter = 0;
var detectionTimeOut = 5;
var detectionImage = 'http://alephstudios.com/testing/intranet/transparent.gif?' + (new Date()).getTime();
var detectionElement = document.createElement('img');
detectionElement.src = detectionImage;

function detectIntranet() {
    detectionCounter = detectionCounter + 1;
    //  alert('Attempt ' + detectionCounter + ': Sniffing intranet connection by loading an internal resource at ' + detectionImage);
    if (detectionElement.complete) {
        if (detectionElement.width &gt; 0 &amp;&amp; detectionElement.height &gt; 0) {
            //      alert('Attempt ' + detectionCounter + ': The intranet resource was loaded!');
            window.location = internalURL;
        } else {
            //      alert('Attempt ' + detectionCounter + ': The intranet resource could not be loaded!');
            window.location = publicURL;
        }
    } else {
        if (detectionCounter &lt; detectionTimeOut) {
            setTimeout(&quot;detectIntranet()&quot;, 1000);
            //      alert('Attempt ' + detectionCounter + ': Still trying to load: ' + detectionImage);
        } else {
            alert('Attempt ' + detectionCounter + ': Gave up trying to load: ' + detectionImage);
            //	  window.location = publicURL;
        }
    }
}

window.onload = function () {
    detectIntranet();
}

//--&gt;
&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Setting up an intranet detection/redirection page as the browser&#8217;s home page allows IT to display an intranet page while the device is on the network and an Internet page when the device is off the network.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/j4VDAROBjbY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/04/04/javascript-detection-redirection-if-intranet-site-is-accessible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE Compatibility View and IP addresses</title>
		<link>http://www.ardamis.com/2012/04/04/ie-compatibility-view-and-ip-addresses/</link>
		<comments>http://www.ardamis.com/2012/04/04/ie-compatibility-view-and-ip-addresses/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 02:45:50 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2095</guid>
		<description><![CDATA[IE Compatibility View remembers your choices for domain names but not for IP addresses, when IE is set to delete your browsing history.]]></description>
			<content:encoded><![CDATA[<p>I recently discovered that IE9 remembers the Compatibility View setting for <em>a domain name</em>, but does not remember the setting for <em>an IP address</em>, if the browser is closed and the option to &#8220;Delete browsing history on exit&#8221; is checked.  The &#8220;Delete browsing history on exit&#8221; on is found under the General tab in Internet Options.</p>
<blockquote><p>If you choose to view a website in Compatibility View, as a convenience to you, Internet Explorer will remember this choice and use Compatibility View the next time you visit the site. You can clear the list of websites you&#8217;ve chosen to display in Compatibility View by using the Delete Browsing History feature in Internet Explorer or the Compatibility View Settings dialog box.<br />
<a href="http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/windows-internet-explorer-9-privacy-statement">http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/windows-internet-explorer-9-privacy-statement</a></p></blockquote>
<p><strong>Update</strong>: Hmm, actually.  I think I&#8217;m wrong about this, or there&#8217;s more to it than meets the eye.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/00-SYS6kgTQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/04/04/ie-compatibility-view-and-ip-addresses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BrandYourself.com is a good idea with only fair execution</title>
		<link>http://www.ardamis.com/2012/03/20/brandyourself-good-idea-fair-execution/</link>
		<comments>http://www.ardamis.com/2012/03/20/brandyourself-good-idea-fair-execution/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 05:33:26 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[Nonsense]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2088</guid>
		<description><![CDATA[I take a quick look at BrandYourself.com, a site that purports to be able to promote your social profile pages in Google, to see if they are doing anything surprising with SEO.]]></description>
			<content:encoded><![CDATA[<p><a href="https://brandyourself.com/">BrandYourself</a> is a site with a very good idea &#8211; helping people gain a bit of control over the pages that their names rank for in Google.  I first read about it in an article explaining why such a service may be useful <a href="http://techcrunch.com/2012/03/17/brandyourself-launch-numbers/">at TechCrunch</a>, which caught my eye due to my interest in SEO. </p>
<p>I have my own site (you&#8217;re on it), and I feel I know enough about SEO to have some influence what shows up in Google, but I was curious about what they were doing and wanted to see if they had any tricks I could learn. I created <a href="http://oliverbaty.brandyourself.com/">a profile</a> and a <a href="http://oliverbaty.brandyourself.com/Links">links page</a> to help promote my resume (2nd page on Google) and my GitHub profile (3rd page).   After viewing the source code, I&#8217;ve determined that BrandYourself isn&#8217;t doing anything wrong, but I feel the execution misses a few things.  It&#8217;s obviously designed for people who have a limited number of web presences, and probably no presences that they completely control (ie, they don&#8217;t have their own sites), but do have one or two accounts on sites like Facebook or YouTube where they can post information.</p>
<p>The main idea of the site is to create and/or promote via linking additional pages that rank for your name.  It is an opportunity to add another page to Google&#8217;s index, but one that is designed to rank well for a single phrase &#8211; your name.</p>
<p>While BrandYourself claims to have a deep understanding of SEO, many of their techniques are very beginner &#8211; url, title tags, h1 tags, etc.  Using a phrase in these places is a safe and proven way to rank for that phrase, although there is no guarantee that a page that does this will outrank a page that does not.  Using a phrase in various places on a web page are among the &#8216;on-page factors&#8217; that Google looks for when determining the relative importance of a page.  They claim that 3-5% keyword density (the amount of text on a page that is comprised of keyword phrases) is the target, but at first glance a not-very-completely filled out profile page seems to easily exceed that density for my name.  The links page in particular looks rather sparse and spammy.</p>
<p>Other factors contributes to rank as well.  &#8216;Off-page factors&#8217; are mainly links to that page from other pages, and these links carry significant weight.  BrandYourself doesn&#8217;t seem to be doing any linking internally from profile to profile, or from profile to school/career/location hub.  At the very least, they should be using the person&#8217;s name as the link text in the single link from the links page to the profile page.  They encourage users to create inbound links (also called backlinks) to their page on BrandYourself, but don&#8217;t appear to link out from it, other than to a Links page that contains the links to your other profiles (ex. Facebook, LinkedIn, etc.).</p>
<p>Each account is given a URL that is a subdomain of brandyourself.com.  My page is oliverbaty.brandyourself.com.  That&#8217;s not bad, but I&#8217;m curious to see what happens when two people with the same name sign up.  It&#8217;ll also be interesting to see if they brandyourself.com profiles for people with more common names can push up to the first page of the SERPs.  The external pages you choose to promote, including your other social profiles, are displayed on a separate page.</p>
<p>Interestingly, each subdomain has a robots.txt file, but not a sitemap.xml file.  It does have its own 404 page (that sends a 404 HTTP status header), and the page will echo back the path part of the URL you pass it (url encoded, of course).</p>
<p>The interface is pretty slick, with lots of nice Ajax effects that one would expect from a startup today.  There&#8217;s a little bit of badge-earning, but no big deal.</p>
<p>I already rank pretty well for my name, but there is always room for improvement.  When I Google myself, about half of the results on the first page are profiles that I have some control over.</p>
<pre>
Oliver Baty | LinkedIn
www.linkedin.com/in/oliverbaty
(my profile)

Ardamis
www.ardamis.com/
(my site)

Oliver Baty | Facebook
www.facebook.com/oliver.baty
(my profile)

Oliver Baty (@ardamis) on Twitter
twitter.com/#!/ardamis
(my profile)

Oliver Baty - Google+

https://plus.google.com/113392027226542020317

(my profile)

Oliver Baty (1862 - 1941) - Ancestry.com
records.ancestry.com/
(not me)

Oliver Baty in Oak Park, IL | Miami University Of Ohio | Profile at ...
www.peekyou.com/
(about me)

Internet Archive Search: creator:"Oliver Baty Cunningham Memorial ...
www.archive.org/
(not me)

Oliver Baty Cunningham Memorial Publication Fund [WorldCat ...
www.worldcat.org/
(not me)

Oliver Baty Cunningham Memorial Pu Fund - Barnes &#038; Noble
www.barnesandnoble.com/
(not me)
</pre>
<p>Maybe it will take off later.  The TechCrunch article states that BrandYourself had nearly 6,000 sign-ups between March 8 and March 17, so that&#8217;s pretty good.  A Google search on March 20 for <strong>site:brandyourself.com</strong> returns &#8220;about 8,760 results.&#8221;</p>
<p>As of March 20, a Google search for <strong>site:brandyourself.com oliver baty</strong> returns no results.  Two days later, my profile page and my links page were both in Google&#8217;s index.  This was probably helped along by the links to those pages at the beginning of this article.  As of March 22, a Google search for my name, without being signed in to Google, shows my BrandYourself profile page as the 10th result.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/8OiuQlbjOMc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/03/20/brandyourself-good-idea-fair-execution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing VMware Workstation virtual machines with VBScript</title>
		<link>http://www.ardamis.com/2012/03/08/managing-vmware-workstation-virtual-machines-with-vbscript/</link>
		<comments>http://www.ardamis.com/2012/03/08/managing-vmware-workstation-virtual-machines-with-vbscript/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 04:30:39 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Nonsense]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2049</guid>
		<description><![CDATA[I've written two VBScripts for managing VMware virtual machines.  The first script suspends any running guests and the second restarts the suspended guests.  The trick is to get them to work as logoff/logon scripts.]]></description>
			<content:encoded><![CDATA[<p>In our corporate environment, our Windows 7 workstations can be powered off or restarted remotely in order to deploy updates, patches, or new software.  For those of us running virtual machines in VMware Workstation, this means a running guest operating system would experience an abrupt power-off as the host machine is reset.  At the very minimum, this causes the &#8216;Windows was not shut down properly&#8217; message to appear when the guest OS is powered on, and it may cause serious problems with the integrity of the guest OS or the virtual machine files.</p>
<p>I wanted to improve the situation through the use of shutdown/logoff and startup/logon scripts on the host and the <a href="http://www.ardamis.com/2012/03/07/using-vmrun-to-control-virtual-machines-in-vmware-workstation/"><code>vmrun</code> command line utility</a> that ships with VMware Workstation and VMware Server, and I had three goals in mind.</p>
<ol>
<li>Any running guest OS would be allowed to shut down or suspend before the host powered off</li>
<li>An event would be written to the Application log on the host for each guest that was shut down or suspended</li>
<li>A complementary process would start or resume each guest that was running when the host restarted</li>
</ol>
<p>The VBScripts are written for use on a 64-bit Windows 7 host.</p>
<h2>The challenge of correct timing</h2>
<p>I soon ran into a problem when trying to use Local Group Policy to deploy the shutdown/logoff script on my Windows 7 host.  The order of events is such that the shutdown/logoff process is halted by the still-running vmware.exe process (the VMware Workstation UI).  I&#8217;ve added <a href="#timing">some notes about this behavior</a> to the bottom of the post, but I have not yet solved this problem.</p>
<h2>A word about networking</h2>
<p>If the network adapter in the guest OS is not reconnected upon resuming from suspend (in Windows, this can be resolved with <code>ipconfig /renew</code>), it may be that the VMware Tools scripts are not running at start up/resume.  Disconnecting from the network is a normal process when the VM receives a <code>suspend</code> command with a <code>soft</code> parameter.  I have found that I can ensure that the network adapter is reconnected upon resuming by changing the Power Options for the VM to use &#8220;Start Up Guest&#8221; instead of &#8220;Power On&#8221;.</p>
<h2>The shutdown/logoff script</h2>
<p>This is what I came up with for the shutdown/logoff script.</p>
<pre class="brush: vb; title: ; notranslate">
' This script passes the suspend command to each running VMware virtual machine, allowing it to gracefully sleep/hibernate
' It also saves the list of running VMs to a text file in %TEMP%, which may be parsed by a startup/logon script to resume the VMs
' It can be used as a shutdown/logoff script
' http://www.ardamis.com/2012/03/08/managing-vmware-workstation-virtual-machines-with-vbscript/

Option Explicit

Dim objShell, objScriptExec, objFSO, WshShell, strRunCmd
Dim TEMP, strFileName, vmList, objFile, ForWriting, result, textLines, textLine, isFirstLine

'Initialize the objShell
Set objShell = CreateObject(&quot;WScript.Shell&quot;)

'Execute vmrun and create the list of running virtual machines
Set objScriptExec = objShell.Exec(&quot;&quot;&quot;C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe&quot;&quot; list&quot;)

'Write the list to a variable
vmList = objScriptExec.StdOut.ReadAll()

'Debug
'WScript.Echo vmList

'Initialize the wshShell
Set WshShell = WScript.CreateObject(&quot;WSCript.shell&quot;)

TEMP = WshShell.ExpandEnvironmentStrings(&quot;%TEMP%&quot;)

'Enter the path to the file that will hold the names of the running VMs
strFileName = TEMP &amp; &quot;\vms.txt&quot;

'Debug
'WScript.Echo strFileName

'Initialize the objFSO
Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)

'Create the file
Set objFile = objFSO.CreateTextFile(strFileName)

'Write the list to the file
objFile.Write vmList

'Close the file
objFile.Close

'Split the list into lines
textLines = Split(vmList,vbCrLf)

'Loop through the lines
For Each textLine in textLines

	'Compare the first line in the file to the text &quot;Total running VMs:&quot;
	isFirstLine = StrComp(Mid(textLine, 1, 18), &quot;Total running VMs:&quot;)

	'If the line has more than 0 character (is not blank) and is not the first line
	If Len(textLine) &gt; 0 And isFirstLine &lt;&gt; 0 Then

		'Write to the application log
		WshShell.LogEvent 4, &quot;Event: VMware is attempting to suspend the VM at &quot; &amp; textLine

		'Save the command as a variable
		strRunCmd = &quot;&quot;&quot;C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe&quot;&quot; -T ws suspend &quot;&quot;&quot; &amp; textLine &amp; &quot;&quot;&quot; soft&quot;

		'Run the command
		result = WshShell.Run(strRunCmd, 0, True)

		'Write to the application log
		If result = 0 Then
			WshShell.LogEvent 4, &quot;Event: VMware successfully suspended the VM at &quot; &amp; textLine
		Else
			WshShell.LogEvent 1, &quot;Event: VMware was unable to suspend the VM at &quot; &amp; textLine
		End If

'Debug
'WScript.Echo result

'Debug
'WScript.Echo textLine

	End If

Next
</pre>
<p>The vms.txt file that the script creates will contain something like the following, if it finds a running VM:</p>
<pre>Total running VMs: 1
C:\Virtual Machines\Windows XP Professional\Windows XP Professional.vmx</pre>
<p>I have chosen to suspend the virtual machine, rather than shut it down, because I don&#8217;t want to lose any work that may be unsaved.  The official explanation of the <code>suspend</code> power command from VMware:</p>
<blockquote><p>Suspends a virtual machine (<code>.vmx</code> file) or team (<code>.vmtm</code>) without shutting down, so local work can resume later. The <code>soft</code> option suspends the guest after running system scripts. On Windows guests, these scripts release the IP address. On Linux guests, the scripts suspend networking. The <code>hard</code> option suspends the guest without running the scripts. The default is to use the <code>powerType</code> value specified in the <code>.vmx</code> file, if present.<br />
To resume virtual machine operation after <code>suspend</code>, use the <code>start</code> command. On Windows, the IP address is retrieved.  On Linux, networking is restarted.<br />
<a http://www.vmware.com/support/developer/vix-api/vix110_vmrun_command.pdf">http://www.vmware.com/support/developer/vix-api/vix110_vmrun_command.pdf</a></p></blockquote>
<h2>The startup/logon script</h2>
<p>This is the startup/logo script that compliments the shutdown/logoff script.</p>
<pre class="brush: vb; title: ; notranslate">
' This script reads a list of VMware virtual machines from a text file and passes the start command to each VM, allowing it to resume from sleep/hibernate/shutdown
' It can be used as a startup/logon script
' http://www.ardamis.com/2012/03/08/managing-vmware-workstation-virtual-machines-with-vbscript/

Option Explicit

Dim objFSO, WshShell, strRunCmd
Dim TEMP, strFileName, objTextStream, vmList, ForReading, result, textLines, textLine, isFirstLine

'Initialize the wshShell
Set WshShell = WScript.CreateObject(&quot;WSCript.shell&quot;)

TEMP = WshShell.ExpandEnvironmentStrings(&quot;%TEMP%&quot;)

'Enter the path to the text file that will hold the names of the running VMs
strFileName = TEMP &amp; &quot;\vms.txt&quot;

WshShell.LogEvent 4, &quot;Event: VMware is attempting to find a list of VMs to restart in &quot; &amp; strFileName

'Initialize the objFSO
Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)

'Check to see if the text file exists
If objFSO.FileExists(strFileName) Then

	'Open the text file
	Set objTextStream = objFSO.OpenTextFile(strFileName, 1)

	'Read the contents into a variable
	vmList = objTextStream.ReadAll()

'Debug
'WScript.Echo vmList

	'Close the text file
	objTextStream.Close

	'Split the list into lines
	textLines = Split(vmList,vbCrLf)

	'Loop through the lines
	For Each textLine in textLines

		'Compare the first line in the file to the text &quot;Total running VMs: 0&quot;
		isFirstLine = StrComp(Mid(textLine, 1, 20), &quot;Total running VMs: 0&quot;)

		'Check to see if the first line of the text file reports 0 running VMs
		If isFirstLine = 0 Then

			'Write to the application log
			WshShell.LogEvent 4, &quot;Event: VMware found no running VMs were enumerated in &quot; &amp; strFileName

		End If

		'Compare the first line in the file to the text &quot;Total running VMs:&quot;
		isFirstLine = StrComp(Mid(textLine, 1, 18), &quot;Total running VMs:&quot;)

		'If the line has more than 0 character (is not blank) and is not the first line
		If Len(textLine) &gt; 0 And isFirstLine &lt;&gt; 0 Then

			'Write to the application log
			WshShell.LogEvent 4, &quot;Event: VMware is attempting to start the VM at &quot; &amp; textLine

			'Save the command as a variable
			strRunCmd = &quot;&quot;&quot;C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe&quot;&quot; -T ws start &quot;&quot;&quot; &amp; textLine

			'Run the command
			result = WshShell.Run(strRunCmd, 0, True)

			'Write to the application log
			If result = 0 Then
				WshShell.LogEvent 4, &quot;Event: VMware successfully started the VM at &quot; &amp; textLine
			Else
				WshShell.LogEvent 1, &quot;Event: VMware was unable to start the VM at &quot; &amp; textLine
			End If

'Debug
'WScript.Echo result

'Debug
'WScript.Echo textLine

		End If

	Next

Else
	WshShell.LogEvent 4, &quot;Event: VMware did not find a list of VMs to restart at &quot; &amp; strFileName
End If
</pre>
<p>This script starts/resumes the virtual machine and launches the Workstation user interface.</p>
<h2 id="timing">Timing of the shutdown/logoff events</h2>
<p>Using Group Policy shutdown/logoff scripts seemed a natural way to power off and resume the virtual machines, but there is a timing problem that prevents this from working as desired.  Instead of running any logoff scripts immediately when the user chooses to log off, Windows first tries to close any open applications by ending running processes.  When it encounters vmware.exe, which is the VMware Workstation GUI, it pauses the log off process and asks the user whether the log off should force the applications to close, or if the log off should be cancelled.</p>
<p>On Windows 7, the screen will dim and the programs that are preventing Windows from logging off the user or shutting down are listed.</p>
<div id="attachment_2064" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.ardamis.com/wp-content/uploads/2012/03/windows-program-still-needs-to-close.png"><img src="http://www.ardamis.com/wp-content/uploads/2012/03/windows-program-still-needs-to-close.png" alt="Windows 7 - 1 program still needs to close" title="Windows 7 - 1 program still needs to close" width="500" height="430" class="size-full wp-image-2064" /></a><p class="wp-caption-text">Windows 7 - VMware Workstation prevents shutdown or logoff</p></div>
<blockquote><p>
1 program still needs to close:</p>
<p>(Waiting for) [VM name] &#8211; VMware Workstation<br />
1 virtual machine is in use.</p>
<p>To close the program that is preventing Windows from logging off, click Cancel, and then close the program.<br />
[Force log off] [Cancel]
</p></blockquote>
<p>As pointed out on the vmware.com community forums, this only happens when the Workstation UI <em>process</em> is running at the time.</p>
<blockquote><p>We don&#8217;t support running Workstation a service.  I assume you&#8217;re using some third-party tool for that?</p>
<p>Anyway, that error only appears if the Workstation UI is running when you try to log off.  If you kill the UI process (vmware.exe) and let the VM run in the background, you shouldn&#8217;t get that.  Alternatively you could try running VMware Player instead of VMware Workstation a service.<br />
<a href="http://communities.vmware.com/message/1189261">http://communities.vmware.com/message/1189261</a>
</p></blockquote>
<p>Quitting the Workstation process and allowing the scripts to close out the actual VMs seemed like an acceptable compromise.  It still required some user interaction on the host to prepare the guest to be powered off, but I figured that there may be ways to end the Workstation UI programatically prior to the logoff.</p>
<p>I decided to consult the <a href="http://www.vmware.com/pdf/ws71_manual.pdf">Workstation 7.1 manual</a>: </p>
<blockquote><p>You can set a virtual machine that is powered on to continue running in the background when you close a virtual machine or team tab, or when you exit Workstation. You can still interact with it through VNC or another service.<br />
From the VMware Workstation menu bar, choose Edit &gt; Preferences. On the Workspace tab, select Keep VMs running after Workstation closes and click OK.<br />
<a href="http://www.vmware.com/pdf/ws71_manual.pdf">http://www.vmware.com/pdf/ws71_manual.pdf</a>
</p></blockquote>
<p>I found that if the VMware Workstation application is already closed, the shutdown/logoff proceeds smoothly and the scripts fire.   But there is another problem.  By the time the logoff script runs, the vmware-vmx.exe process (the actual virtual machine) has already been quit, so the <code>vmrun list</code> command finds no running VMs and you end up with a vms.txt file that contains this:</p>
<pre>Total running VMs: 0</pre>
<p>At this point, running VMware Player like a service logged on as the Local System account, which presumably will allow the VMs to continue running even while users on the host log out, becomes the best solution, as it theoretically avoids the problem of a) requiring the user to close the UI and b) the vmware-vmx.exe process being ended as the user logs off.  VMware Player is included with Workstation, but we&#8217;re not quite out of the woods yet.  According to another VMware employee:</p>
<blockquote><p>VMware Player is not built to run as a service. However, there are different discussions and possible solutions using srvany.exe.<br />
If you google for <strong>site:vmware.com srvany player</strong> you will find some interesting posts for this issue.<br />
<a href="http://communities.vmware.com/message/1595588">http://communities.vmware.com/message/1595588</a></p></blockquote>
<p>I followed through on this suggestion, and while it didn&#8217;t solve my problem, I&#8217;m including some detail here in the hopes that it will further someone else&#8217;s exploration.</p>
<p>To run an application as though it were a service, you need two executables from the <a href="http://www.microsoft.com/download/en/details.aspx?id=17657">Windows Server 2003 Resource Kit Tools</a>:</p>
<ul>
<li>Instsrv.exe: Service Installer</li>
<li>Srvany.exe: Applications as Services Utility</li>
</ul>
<p>The Windows Server 2003 Resource Kit Tools are not officially supported on Windows 7, and in fact the installer will cause the Program Compatibility Assistant to warn that &#8220;This program has known compatibility issues&#8221;, but my observations seems to support other people&#8217;s reports that they work fine.</p>
<p>A <a href="http://www.windowsitpro.com/article/services/vmware-at-your-service-">Windows .Net magazine article from 2004</a> referencing Workstation 4.0 is still a good guide to follow in setting this up.  My adjustments for using Player are below:</p>
<ol>
<li>Install the Windows Server 2003 Resource Kit Tools and reboot</li>
<li>Locate srvany.exe (the default location is C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe)</li>
<li>Open an elevated command prompt and enter <strong>instsrv [service name] [srvany.exe location]</strong>, using anything you want for the service name (ex: <strong>instsrv vmplayer &#8220;C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe&#8221;</strong>)</li>
<li>Open an elevated instance of the Windows Services snap-in (services.msc), right-click the newly created service, choose the Log On tab, and check the box next to &#8220;Allow service to interact with desktop&#8221;</li>
<li>Open an elevated instance of Registry Editor (regedit.exe)</li>
<li>Locate vmplayer.exe (the default location is C:\Program Files (x86)\VMware\VMware Workstation\vmplayer.exe)</li>
<li>Navigate to your service&#8217;s key at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\[service name]</li>
<li>Create a new subkey named <em>Parameters</em> under your service&#8217;s key</li>
<li>Create a new String Value named <em>Application</em> under the Parameters key</li>
<li>Double-click the <em>Application</em> value and enter the path to vmplayer.exe as the value&#8217;s data</li>
</ol>
<p>You should now be able to start the <strong>vmplayer</strong> service (or whatever you chose to name it) from the Services snap-in.</p>
<p>But, we&#8217;re <em>still</em> not home free.  This doesn&#8217;t magically allow any instance of VMware Player to persist through a user logoff (which is really what I was hoping to get).</p>
<p>The harsh reality set in when I came across this thread, wherein <a href="http://communities.vmware.com/people/continuum">continuum</a> (a guy with incredible insight into VMware) bursts the vm-as-a-service balloon:</p>
<blockquote><p>there are 2 ways to run the service &#8230;<br />
- run it with &#8220;local system account&#8221; plus &#8220;allow to interact &#8230;&#8221;  checked<br />
- run it as a user &#8211; needs the password of this user</p>
<p>In first case the VM starts after a user is logged in &#8211; the VM is visible and you can interact with it but you can NOT log off.<br />
It use process vmplayer.exe plus vmware-vmx.exe.</p>
<p>In second case the VM is invisible and only process vmware-vmx.exe runs but no user has to be logged in<br />
<a href="http://communities.vmware.com/message/1471897#1471897">http://communities.vmware.com/message/1471897#1471897</a></p></blockquote>
<p>What I need is the best of both worlds: a VMware GUI environment, be it Workstation or Player, that is able to load a VM when a user logs into the host, and at the same time is able to keep the VM running while that user logs off.</p>
<p>Ultimately, I&#8217;m left with the same feelings as expressed toward the end of the thread at <a href="http://communities.vmware.com/message/1402590">http://communities.vmware.com/message/1402590</a>: why should useful and highly sought-after functionality that is present in the free but no-longer-actively developed Server product be absent from the non-free and actively developed Workstation product?</p>
<p>The answer, if there is one, may be that VMware doesn&#8217;t want to get involved.</p>
<blockquote><p>One of the nastier corner cases is, what happens if there is a failure suspending the VM?  Do we decide the user really wanted to log off and forcibly kill the VM, or do we veto the log-off and go back to the user for input (which, if you are using a laptop, means closing the lid leaves the VM running and kills the battery)?  What if the VM process crashes during this &#8211; who initiates the log-off then?  What if the VM is busy doing something expensive (like disk consolidation) and cannot suspend?  Getting involved in the log-off path is, realistically, just a mess of bugs.<br />
<a href="http://communities.vmware.com/thread/233117">http://communities.vmware.com/thread/233117</a></p></blockquote>
<h2>Final thoughts</h2>
<p>As with pretty much anything I do, this is far from finished.  I&#8217;m not ready to give up on the goal of using scripts to start and suspend VMs without any user interaction.  But it seems that it&#8217;s going to be much more difficult than one might reasonably expect.</p>
<p>As for the scripts themselves, I&#8217;m slightly bothered by the empty command prompt window that is opened momentarily by <code>objShell.Exec</code>.  I&#8217;m not sure that I like saving the list of running VMs to <code>%TEMP%</code>, where it may be deleted by other processes that clean that location at login/logout.  But they are a good start, and they seem to serve their purpose.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/OAxK-zfRK5g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/03/08/managing-vmware-workstation-virtual-machines-with-vbscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using vmrun to control virtual machines in VMware Workstation</title>
		<link>http://www.ardamis.com/2012/03/07/using-vmrun-to-control-virtual-machines-in-vmware-workstation/</link>
		<comments>http://www.ardamis.com/2012/03/07/using-vmrun-to-control-virtual-machines-in-vmware-workstation/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 06:28:07 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2038</guid>
		<description><![CDATA[How to start, stop, suspend, pause and unpause a virtual machine in VMware Workstation 7 from the command line using vmrun.exe.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on scripting a shutdown/logoff script for my host machine that will suspend any running virtual machines as the host powers off, then restart them when the host restarts (or when a specific user logs in).</p>
<p>VMware provides a hand command line utility, <em>vmrun</em>, to send commands to VMware Workstation or VMware Server.  The power options are:</p>
<ul>
<li><strong>start</strong> &#8211; Powers on a virtual machine. The virtual machine may be started without a VMware user interface by passing the nogui parameter.</li>
<li><strong>stop</strong> &#8211; Powers off a virtual machine. The guest OS can be made aware of the shutdown by passing the soft parameter, or the power can be abruptly cut by passing the hard parameter.</li>
<li><strong>reset</strong> &#8211; Restarts a virtual machine. The guest OS can be made aware of the restart by passing the soft parameter, or the power can be abruptly cut by passing the hard parameter.</li>
<li><strong>suspend</strong> &#8211; Suspends a virtual machine. The guest OS can be made aware of the suspend command by passing the soft parameter, allowing it to sleep/hibernate (if supported).</li>
<li><strong>pause</strong> &#8211; Pauses a virtual machine.</li>
<li><strong>unpause</strong> &#8211; Resumes a paused virtual machine.</li>
</ul>
<p>For power commands that support the <em>soft</em> parameter, specifying <em>soft</em> sends instructions to the guest OS to allow it to gracefully power down, sleep, hibernate, etc.  This also allows scripts to run in VMware Tools, or in the guest OS itself.</p>
<p>The <em>pause</em> and <em>unpause</em> commands are instructions to VMware Workstation or VMware Server and are invisible to the  guest OS.</p>
<p>The vmrun utility does much more than start and stop virtual machines.  The official manual from VMware for Workstation 6.5 and Server 2.0 can be found at <a href="http://www.vmware.com/products/beta/ws/vmrunCommand.pdf">http://www.vmware.com/products/beta/ws/vmrunCommand.pdf</a>.</p>
<p>The help screen for vmrun is below.</p>
<pre>
vmrun version 7.1.5 build-491717

Usage: vmrun [AUTHENTICATION-FLAGS] COMMAND [PARAMETERS]

AUTHENTICATION-FLAGS
--------------------
These must appear before the command and any command parameters.

   -h <hostName>  (not needed for Workstation)
   -P <hostPort>  (not needed for Workstation)
   -T <hostType> (ws|server|server1|fusion|esx|vc|player)
     for example, use '-T server' for VMware Server 2.0
                  use '-T server1' for VMware Server 1.0
                  use '-T ws' for VMware Workstation
                  use '-T esx' for VMware ESX
                  use '-T vc' for VMware vCenter Server
   -u <userName in host OS>  (not needed for Workstation)
   -p
<password in host OS>  (not needed for Workstation)
   -vp
<password for encrypted virtual machine>
   -gu <userName in guest OS>
   -gp
<password in guest OS>

POWER COMMANDS           PARAMETERS           DESCRIPTION
--------------           ----------           -----------
start                    Path to vmx file     Start a VM or Team
                         [gui|nogui]

stop                     Path to vmx file     Stop a VM or Team
                         [hard|soft]

reset                    Path to vmx file     Reset a VM or Team
                         [hard|soft]

suspend                  Path to vmx file     Suspend a VM or Team
                         [hard|soft]

pause                    Path to vmx file     Pause a VM

unpause                  Path to vmx file     Unpause a VM

SNAPSHOT COMMANDS        PARAMETERS           DESCRIPTION
-----------------        ----------           -----------
listSnapshots            Path to vmx file     List all snapshots in a VM
                         [showTree]

snapshot                 Path to vmx file     Create a snapshot of a VM
                         Snapshot name

deleteSnapshot           Path to vmx file     Remove a snapshot from a VM
                         Snapshot name
                         [andDeleteChildren]

revertToSnapshot         Path to vmx file     Set VM state to a snapshot
                         Snapshot name

RECORD/REPLAY COMMANDS   PARAMETERS           DESCRIPTION
----------------------   ----------           -----------
beginRecording           Path to vmx file     Begin recording a VM
                         Snapshot name

endRecording             Path to vmx file     End recording a VM

beginReplay              Path to vmx file     Begin replaying a VM
                         Snapshot name

endReplay                Path to vmx file     End replaying a VM

GUEST OS COMMANDS        PARAMETERS           DESCRIPTION
-----------------        ----------           -----------
runProgramInGuest        Path to vmx file     Run a program in Guest OS
                         [-noWait]
                         [-activeWindow]
                         [-interactive]
                         Complete-Path-To-Program
                         [Program arguments]

fileExistsInGuest        Path to vmx file     Check if a file exists in Guest OS
                         Path to file in guest

setSharedFolderState     Path to vmx file     Modify a Host-Guest shared folder
                         Share name
                         Host path
                         writable | readonly

addSharedFolder          Path to vmx file     Add a Host-Guest shared folder
                         Share name
                         New host path

removeSharedFolder       Path to vmx file     Remove a Host-Guest shared folder
                         Share name

enableSharedFolders      Path to vmx file     Enable shared folders in Guest
                         [runtime]

disableSharedFolders     Path to vmx file     Disable shared folders in Guest
                         [runtime]

listProcessesInGuest     Path to vmx file     List running processes in Guest OS

killProcessInGuest       Path to vmx file     Kill a process in Guest OS
                         process id

runScriptInGuest         Path to vmx file     Run a script in Guest OS
                         [-noWait]
                         [-activeWindow]
                         [-interactive]
                         Interpreter path
                         Script text

deleteFileInGuest        Path to vmx file     Delete a file in Guest OS
Path in guest            

createDirectoryInGuest   Path to vmx file     Create a directory in Guest OS
Directory path in guest  

deleteDirectoryInGuest   Path to vmx file     Delete a directory in Guest OS
Directory path in guest  

listDirectoryInGuest     Path to vmx file     List a directory in Guest OS
                         Directory path in guest

CopyFileFromHostToGuest  Path to vmx file     Copy a file from host OS to guest OS
Path on host             Path in guest

CopyFileFromGuestToHost  Path to vmx file     Copy a file from guest OS to host OS
Path in guest            Path on host

renameFileInGuest        Path to vmx file     Rename a file in Guest OS
                         Original name
                         New name

captureScreen            Path to vmx file     Capture the screen of the VM to a local file
Path on host             

writeVariable            Path to vmx file     Write a variable in the VM state
                         [runtimeConfig|guestEnv]
                         variable name
                         variable value

readVariable             Path to vmx file     Read a variable in the VM state
                         [runtimeConfig|guestEnv]
                         variable name

VPROBE COMMANDS          PARAMETERS           DESCRIPTION
---------------          ----------           -----------
vprobeVersion            Path to vmx file     List VP version

vprobeLoad               Path to vmx file     Load VP script
                         'VP script text'

vprobeLoadFile           Path to vmx file     Load VP file
                         Path to VP file

vprobeReset              Path to vmx file     Disable all vprobes

vprobeListProbes         Path to vmx file     List probes

vprobeListGlobals        Path to vmx file     List global variables

GENERAL COMMANDS         PARAMETERS           DESCRIPTION
----------------         ----------           -----------
list                                          List all running VMs

upgradevm                Path to vmx file     Upgrade VM file format, virtual hw

installTools             Path to vmx file     Install Tools in Guest

register                 Path to vmx file     Register a VM

unregister               Path to vmx file     Unregister a VM

listRegisteredVM                              List registered VMs

deleteVM                 Path to vmx file     Delete a VM

clone                    Path to vmx file     Create a copy of the VM
                         Path to destination vmx file
                         full|linked
                         [Snapshot name]

Examples:

Starting a virtual machine with Workstation on a Windows host
   vmrun -T ws start "c:\my VMs\myVM.vmx"

Stopping a virtual machine on an ESX host
   vmrun -T esx -h https://myHost.com/sdk -u hostUser -p hostPassword stop "[storage1] vm/myVM.vmx"

Running a program in a virtual machine with Workstation on a Windows host with Windows guest
   vmrun -T ws -gu guestUser -gp guestPassword runProgramInGuest "c:\my VMs\myVM.vmx" "c:\Program Files\myProgram.exe"

Running a program in a virtual machine with Server on a Linux host with Linux guest
   vmrun -T server -h https://myHost.com:8333/sdk -u hostUser -p hostPassword -gu guestUser -gp guestPassword runProgramInGuest "[standard] vm/myVM.vmx" /usr/bin/X11/xclock -display :0

Creating a snapshot of a virtual machine with Workstation on a Windows host
   vmrun -T ws snapshot "c:\my VMs\myVM.vmx" mySnapshot

Reverting to a snapshot with Workstation on a Windows host
   vmrun -T ws revertToSnapshot "c:\my VMs\myVM.vmx" mySnapshot

Deleting a snapshot with Workstation on a Windows host
   vmrun -T ws deleteSnapshot "c:\my VMs\myVM.vmx" mySnapshot

Enabling Shared Folders with Workstation on a Windows host
   vmrun -T ws enableSharedFolders "c:\my VMs\myVM.vmx"
</pre>
<p>Additional resources: <a href="http://www.virtuatopia.com/index.php/Controlling_VMware_Virtual_Machines_from_the_Command_Line_with_vmrun">http://www.virtuatopia.com/index.php/Controlling_VMware_Virtual_Machines_from_the_Command_Line_with_vmrun</a></p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/KljXQpYpAms" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/03/07/using-vmrun-to-control-virtual-machines-in-vmware-workstation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixed: Windows 7 USB/DVD Download Tool unable to copy files</title>
		<link>http://www.ardamis.com/2012/03/03/windows-7-usbdvd-download-tool-unable-to-copy-files/</link>
		<comments>http://www.ardamis.com/2012/03/03/windows-7-usbdvd-download-tool-unable-to-copy-files/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 17:50:05 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Nonsense]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Xbox 360]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2026</guid>
		<description><![CDATA[How to clean the MBR and partition table of a USB flash drive to resolve the problem of the WUDT reporting "We were unable to copy your files."]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a fan of the simple and effective <a href="http://www.microsoftstore.com/store/msstore/html/pbPage.Help_Win7_usbdvd_dwnTool">Windows 7 USB/DVD Download Tool</a> for quite awhile, and have often used it to <a href="http://www.ardamis.com/2010/02/13/bootable-windows-7-usb-drive/">create a bootable USB flash drive for installing Windows 7</a>.</p>
<p>But I recently ran into a problem with a flash drive after connecting it to my Xbox 360 and using it to move my profile.  The Xbox 360 must have made some change to the MBR on the flash drive that the WUDT didn&#8217;t like, because it was unable to format the drive.</p>
<p>The WUDT would begin to format the drive, then report:</p>
<blockquote><p>We were unable to copy your files. Please check your USB device and the selected ISO file and try again.</p></blockquote>
<p>Windows 7 had no problems formatting the drive, but something was obviously missing from the process.</p>
<p>A quick search in Google turned up the solution.  The formatting done by Windows 7 or the WUDT wasn&#8217;t cleaning the MBR and partition table.</p>
<p>To thoroughly format the drive so that it can be used by the WUDT, open an elevated command prompt and enter the following command, using the drive number of the USB drive reported in <code>list disk</code> for the value of <code>select disk #</code>.</p>
<pre>
diskpart
list disk
select disk #
clean
create partition primary
select partition 1
active
format quick fs=fat32
assign
exit
</pre>
<p>For the curious, here&#8217;s a more detailed explanation of the <code>clean</code> command:</p>
<blockquote><p>Removes any and all partition or volume formatting from the disk with focus. On master boot record (MBR) disks, only the MBR partitioning information and hidden sector information are overwritten. On GUID partition table (GPT) disks, the GPT partitioning information, including the Protective MBR, is overwritten; there is no hidden sector information.<br />
<a href="http://technet.microsoft.com/en-us/library/cc766465(v=ws.10).aspx">http://technet.microsoft.com/en-us/library/cc766465(v=ws.10).aspx</a></p></blockquote>
<p>I would expect that the MBR and partition table would need to be cleaned after formatting a drive for booting Mac OS X, too.</p>
<p>Credit: <a href="http://4sysops.com/archives/windows-7-usbdvd-download-tool-wudt-is-unable-to-copy-files/">http://4sysops.com/archives/windows-7-usbdvd-download-tool-wudt-is-unable-to-copy-files/</a></p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/T-Av927qojE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/03/03/windows-7-usbdvd-download-tool-unable-to-copy-files/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VMware Workstation returns an “Internal error” when powering on a virtual machine</title>
		<link>http://www.ardamis.com/2012/03/02/vmware-workstation-internal-error/</link>
		<comments>http://www.ardamis.com/2012/03/02/vmware-workstation-internal-error/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 03:58:51 +0000</pubDate>
		<dc:creator>ardamis</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.ardamis.com/?p=2012</guid>
		<description><![CDATA[Reinstalling VMware Workstation 7 resolved a strange "Internal error" when powering on a virtual machine.]]></description>
			<content:encoded><![CDATA[<p>I recently reinstalled Windows 7 and then VM Workstation 7 on a machine that I&#8217;d been using as a VMware Workstation host running an XP virtual machine.  The VM is named &#8220;XP-Office2007&#8243; and it resides on a separate physical hard drive in the machine.  Since the reinstall, upon clicking the &#8220;Power on this virtual machine&#8221; link, VMware returns a cryptic &#8220;Internal error.&#8221; and fails to start the VM.</p>
<div id="attachment_2013" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ardamis.com/wp-content/uploads/2012/03/vmware-Internal-error.png"><img src="http://www.ardamis.com/wp-content/uploads/2012/03/vmware-Internal-error-300x84.png" alt="VMware Workstation - Internal error." title="VMware Workstation - Internal error." width="300" height="84" class="size-medium wp-image-2013" /></a><p class="wp-caption-text">VMware Workstation - Internal error.</p></div>
<p>The vmware log in %temp% had the following entries:</p>
<pre class="brush: plain; title: ; notranslate">
Mar 01 09:28:46.750: vmui| CVMUIStatusVM::OnPowerVM clicked
Mar 01 09:28:46.920: vmui-1176| /vm/#6f7088f493f32788/: VMHSVMCbPower: Setting state of VM to powerOn with option hard
Mar 01 09:28:46.921: vmui-1176| VMHSGetVMX failed: Empty vmxFilePath
Mar 01 09:28:46.921: vmui-1176| VMHSLaunchVM failed: VMDB failure
Mar 01 09:28:46.957: vmui| Internal VMDB error: VMDB failure
Mar 01 09:28:46.957: vmui| Internal error.
Mar 01 09:28:46.957: vmui| VMDlg::ShowDialog: Internal error.
</pre>
<p>Of course, I immediately started Googling these errors and failure messages, but found very little.  At least one page indicated that a similar sounding problem wasn&#8217;t resolved by re-installing VMware.  I like to think I&#8217;m pretty decent with VMware, so I decided I&#8217;d roll up my sleeves, dig into the VM, and try to figure it out.</p>
<p>Trying to get lightning to strike twice, I tried my old standby fix of <a href="http://www.ardamis.com/2009/11/20/vmware-cannot-open-the-disk-xxxxxx-vmdk-or-one-of-the-snapshot-disks-it-depends-on/">editing the name of the hard drive in the *.vmx file</a>.  Instead of pointing the IDE drive to the &#8220;XP-Office2007-000001.vmdk&#8221; file, I moved that file out of my VM directory and then changed the ide0:0.fileName value to point to the older *.vmdk file, named &#8220;XP-Office2007.vmdk&#8221;.  The IDE lines now looked like this:</p>
<pre class="brush: plain; title: ; notranslate">
ide0:0.present = &quot;TRUE&quot;
ide0:0.fileName = &quot;XP-Office2007.vmdk&quot;
ide1:0.present = &quot;TRUE&quot;
ide1:0.fileName = &quot;E:&quot;
</pre>
<p>When the machine was powered on, it still failed, but with a different and more descriptive error:</p>
<div id="attachment_2014" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.ardamis.com/wp-content/uploads/2012/03/vmware-unable-to-open-file.png"><img src="http://www.ardamis.com/wp-content/uploads/2012/03/vmware-unable-to-open-file-300x90.png" alt="VMware Workstation - Unable to open file" title="VMware Workstation - Unable to open file" width="300" height="90" class="size-medium wp-image-2014" /></a><p class="wp-caption-text">VMware Workstation - Unable to open file</p></div>
<p><em>VMware Workstation</em><br />
<em>Unable to open file &#8220;D:\VMware\Virtual Machines\XP-Office2007\XP-Office2007.vmdk&#8221;: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot.</em></p>
<p>The more verbose message from the vmware log in %temp% read:</p>
<pre class="brush: plain; title: ; notranslate">
Mar 01 10:31:22.814: vmui| CVMUIStatusVM::OnPowerVM clicked
Mar 01 10:31:23.016: vmui-3992| SNAPSHOT: SnapshotDiskTreeAddFromSnapshot: Trying to add snapshot XP-Office2007-Snapshot2.vmsn to disk D:\VMware\Virtual Machines\XP-Office2007\XP-Office2007.vmdk which already has snapshot currentState.
Mar 01 10:31:23.016: vmui-3992| Cannot open D:\VMware\Virtual Machines\XP-Office2007\XP-Office2007.vmdk of type disk: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot.
Mar 01 10:31:23.016: vmui-3992| Cmd /vm/#6f7088f493f32788/cmd/##94/op/checkMissingFiles/ failed: Unable to open file &quot;D:\VMware\Virtual Machines\XP-Office2007\XP-Office2007.vmdk&quot;: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot.
Mar 01 10:31:23.016: vmui| Unable to open file &quot;D:\VMware\Virtual Machines\XP-Office2007\XP-Office2007.vmdk&quot;: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot.
Mar 01 10:31:23.016: vmui| VMDlg::ShowDialog: Unable to open file &quot;D:\VMware\Virtual Machines\XP-Office2007\XP-Office2007.vmdk&quot;: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot.
</pre>
<p>I copied only the *.vmx and *.vmdk files into a new folder and tried to launch the *vmx as a new VM, but got the Internal error message again.  This was something of a relief, as it suggested that the problem wasn&#8217;t with the VM itself.</p>
<p>I tried to create a new, empty virtual machine using the New Virtual Machine Wizard, but the process didn&#8217;t complete.  After setting up the basic machine, I clicked the Finish button in the wizard, but the window did not close.  The *.vmx and *.vmdk files were created, however.  When I closed the window with the red X and tried to power on the VM, I got the same Internal error message.</p>
<p>I found a <a href="http://communities.vmware.com/message/1523476">VMware community article suggesting that I needed to run Windows Updates on the host</a>. This seemed logical, as perhaps the old host had more recent updates, but I found that the current host was up to date.</p>
<p>As I was running out of ideas, I decided that maybe re-installing Workstation was worth a shot, so I first checked in SCCM Software Center and found it had a Failed status.  I then looked in Windows Programs and Features and found it wasn&#8217;t listed at all.</p>
<p>I reinstalled Workstation from Software Center and lo and behold, the VMs powered up normally.  If I&#8217;d just kept my self-confidence in check, I would probably have gotten around to verifying the install much sooner.</p>
<img src="http://feeds.feedburner.com/~r/ardamis/~4/5VxDxQirHrk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.ardamis.com/2012/03/02/vmware-workstation-internal-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.339 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-30 11:45:35 -->

