<?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>Jephens Tech. &#187; Management</title>
	<atom:link href="http://www.jephens.com/category/management/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jephens.com</link>
	<description>Keeping Computers Happy Since 1997</description>
	<lastBuildDate>Wed, 30 Jun 2010 20:52:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Back Up Microsoft Virtual Server Images&#8230;</title>
		<link>http://www.jephens.com/2010/06/30/back-up-microsoft-virtual-server-images/</link>
		<comments>http://www.jephens.com/2010/06/30/back-up-microsoft-virtual-server-images/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 20:52:51 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Open File]]></category>
		<category><![CDATA[shadow Copy]]></category>
		<category><![CDATA[virtual Server]]></category>
		<category><![CDATA[vss]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=229</guid>
		<description><![CDATA[This article first appeared at the now-closed Win32Scripting site. Since I find it useful, and my bookmark no longer works, I have been unable to reach its author, Jeff Trumbull, so I hope he doesn't mind that I've archived it. Author: Jeff Trumbull Description: Backup files that make a Microsoft virtual server with only about [...]]]></description>
			<content:encoded><![CDATA[<p>This article first appeared at the now-closed <a href="http://cwashington.netreach.net/" target="_blank">Win32Scripting</a> site. Since I find it useful, and my bookmark no longer works, I have been unable to reach its author, Jeff Trumbull, so I hope he doesn't mind that I've archived it.</p>
<p><strong>Author</strong>: Jeff Trumbull</p>
<p><strong>Description</strong>:<br />
Backup files that make a Microsoft virtual server with only about 1 minute of down time. Suspends the virtual server, takes a shadow copy , starts the virtual server then copies virtual server files. This could be used to copy any open files. Requires vshadow.exe from vss sdk.</p>
<p><strong>Script</strong>:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">On</span> <span class="kw1">Error</span> <span class="kw1">Resume</span> <span class="kw1">Next</span></p>
<p><span class="kw1">Set</span> objShell = <span class="kw1">CreateObject</span> <span class="br0">&#40;</span><span class="st0">&quot;WScript.Shell&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">set</span> objFSO=<span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;Scripting.FileSystemObject&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">Set</span> virtualServer = <span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;VirtualServer.Application&quot;</span><span class="br0">&#41;</span><br />
DestBackupDir = <span class="st0">&quot;your backup path&quot;</span><br />
sExCmd = <span class="st0">&quot;CreateVSS.cmd&quot;</span><br />
<span class="kw1">Set</span> oFileSys = <span class="kw1">CreateObject</span><span class="br0">&#40;</span><span class="st0">&quot;Scripting.FileSystemObject&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">if</span> oFileSys.<span class="me1">FileExists</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span> <span class="kw1">then</span> oFileSys.<span class="me1">DeleteFile</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span><br />
<span class="kw1">set</span> oExCmd = oFileSys.<span class="me1">CreateTextFile</span><span class="br0">&#40;</span>sExCmd, CopyOverwrite<span class="br0">&#41;</span></p>
<p><span class="kw1">For</span> each objVM in virtualServer.<span class="me1">VirtualMachines</span><br />
&nbsp; &nbsp; &nbsp;<span class="co1">'See if vm machine is running. If so then do backup</span><br />
&nbsp; &nbsp; &nbsp;<span class="kw1">If</span> objVM.<span class="me1">State</span> = <span class="nu0">5</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'Save state the virtual machine</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">set</span> saveTask = objVM.<span class="me1">Save</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'Loop waiting for task completion - and display status</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="kw1">not</span> saveTask.<span class="me1">isComplete</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WScript.<span class="me1">Sleep</span> <span class="nu0">1000</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">wend</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">'Copy .VMC and .VSV files</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>objVM.<span class="me1">File</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> objVM.<span class="me1">File</span>,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>objVM.<span class="me1">SavedStateFilePath</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> objVM.<span class="me1">SavedStateFilePath</span>,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">End</span> <span class="kw1">If</span><br />
<span class="kw1">Next</span><br />
<span class="kw1">Set</span> objVM = <span class="kw1">Nothing</span></p>
<p><span class="co1">' Create Shadow copy of VM drive</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;vshadow.exe -script=setvar1.cmd -p d:&quot;</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;call setvar1.cmd&quot;</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;vshadow.exe -el=%SHADOW_ID_1%,x:&quot;</span><br />
oExCmd.<span class="kw1">Close</span><br />
Result = objShell.<span class="me1">run</span><span class="br0">&#40;</span>sExCmd,vbMinimized, <span class="kw1">TRUE</span><span class="br0">&#41;</span></p>
<p><span class="co1">' Start VM machine up from saved state</span><br />
<span class="kw1">For</span> each objVM in virtualServer.<span class="me1">VirtualMachines</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'See if vm machine is Saved. If so then resume</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">If</span> objVM.<span class="me1">State</span> = <span class="nu0">2</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">'Start virtual machine</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objVM.<span class="me1">Startup</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">End</span> <span class="kw1">If</span><br />
<span class="kw1">Next</span></p>
<p><span class="kw1">Set</span> objVM = <span class="kw1">Nothing</span><br />
WScript.<span class="me1">Sleep</span> <span class="nu0">10000</span></p>
<p><span class="kw1">If</span> Result = <span class="nu0">0</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">'Loop through all vm machines</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">For</span> each objVM in virtualServer.<span class="me1">VirtualMachines</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'See if vm machine is running. If so copy shadow backup of vm disk drives</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">If</span> objVM.<span class="me1">State</span> = <span class="nu0">5</span> <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">'Copy virtual hard disks and undo disks</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">For</span> each vhd in objVM.<span class="me1">HardDiskConnections</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SourceName = <span class="st0">&quot;x&quot;</span> &amp;amp; <span class="kw1">Right</span><span class="br0">&#40;</span>vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span>,<span class="kw1">Len</span><span class="br0">&#40;</span>vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span><span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wscript.<span class="me1">echo</span> vhd.<span class="me1">undoHardDisk</span>.<span class="me1">file</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wscript.<span class="me1">echo</span> SourceName<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> SourceName,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyArray = <span class="kw1">Split</span><span class="br0">&#40;</span>vhd.<span class="me1">HardDisk</span>.<span class="me1">file</span>,<span class="st0">&quot;\&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Filename = MyArray<span class="br0">&#40;</span><span class="kw1">Ubound</span><span class="br0">&#40;</span>MyArray<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SourceName = <span class="st0">&quot;x&quot;</span> &amp;amp; <span class="kw1">Right</span><span class="br0">&#40;</span>vhd.<span class="me1">HardDisk</span>.<span class="me1">file</span>,<span class="kw1">Len</span><span class="br0">&#40;</span>vhd.<span class="me1">HardDisk</span>.<span class="me1">file</span><span class="br0">&#41;</span><span class="nu0">-1</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;objFSO.<span class="me1">CopyFile</span> SourceName,DestBackupDir &amp;amp; Filename<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">Next</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">End</span> <span class="kw1">If</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">Next</span><br />
<span class="kw1">End</span> <span class="kw1">If</span></p>
<p><span class="co1">' Shutdown all shadow copy instances</span><br />
<span class="kw1">if</span> oFileSys.<span class="me1">FileExists</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span> <span class="kw1">then</span> oFileSys.<span class="me1">DeleteFile</span><span class="br0">&#40;</span>sExCmd<span class="br0">&#41;</span><br />
<span class="kw1">set</span> oExCmd = oFileSys.<span class="me1">CreateTextFile</span><span class="br0">&#40;</span>sExCmd, CopyOverwrite<span class="br0">&#41;</span><br />
oExCmd.<span class="me1">WriteLine</span> <span class="st0">&quot;Echo y | vshadow.exe -da&quot;</span><br />
oExCmd.<span class="kw1">Close</span><br />
Result = objShell.<span class="me1">run</span><span class="br0">&#40;</span>sExCmd,vbMinimized, <span class="kw1">TRUE</span><span class="br0">&#41;</span></p>
<p><span class="co1">'Script ends</span><br />
wscript.<span class="me1">echo</span> <span class="st0">&quot;done&quot;</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2010/06/30/back-up-microsoft-virtual-server-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline Files, Domain Removal and csccmd.exe</title>
		<link>http://www.jephens.com/2009/08/10/offline-files-domain-removal-and-csccmd-exe/</link>
		<comments>http://www.jephens.com/2009/08/10/offline-files-domain-removal-and-csccmd-exe/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 14:25:33 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[csccmd]]></category>
		<category><![CDATA[offline files]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=200</guid>
		<description><![CDATA[A client came to us with an interesting problem -- his laptop was removed from his company's domain and his documents were no longer available to him. He could see the mapped drive, and the folders and files, but when he tried to launch any of the files, he got an "Access Denied" error. So, [...]]]></description>
			<content:encoded><![CDATA[<p>A client came to us with an interesting problem -- his laptop was removed from his company's domain and his documents were no longer available to him. He could see the mapped drive, and the folders and files, but when he tried to launch any of the files, he got an "Access Denied" error.</p>
<p>So, offline files had his documents stored locally, but his lack of network credentials was keeping us from them.</p>
<p>While massively inconvenient, this is how it should be. No credentials, no files. Downside, of course, was I couldn't get the documents copied to the local drive.</p>
<p>Windows 2003 Resource Kit to the rescue!</p>
<p>There's a utility, csccmd.exe which, as the name imples, allows you to work with the "client side cache" (the pre-release name for Offline Files). The most recent version of the csccmd.exe has an option to EXTRACT files from the client side cache and put them on the local drive somewhere.</p>
<p>So, I grabbed the Windows 2003 Resource Kit, downloaded it, installed it,and ran csccmd.exe and it didn't work.</p>
<p>Wha?</p>
<p>Seems there is a <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;884739">NEWER version of csccmd.exe</a> that is only available (officially) from MS Product Support Services (PSS). (Unofficially, <a href="http://www.collegehumor.com/video:1915736">use bing to google</a> csccmd.exe 1.1) which does the job. I downloaded it and copied it into c:\windows (just to avoid path issues).</p>
<p>(I assume it's only available from PSS because it <em>totally bypasses the security issue</em>.)</p>
<p>So, logged in as an administrator, I created a temporary folderand opened a command prompt (do I show my age by insisting on calling it a DOS window?) and typed:</p>
<p>csccmd.exe /extract:\\server\share /target:c:\temp\user /recurse</p>
<p>Ta-da!</p>
<p>The files copied, rights of the folder they were copied into prevails (which is to say that the ACL information was not extracted as well) and he's happy because he has his documents back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/08/10/offline-files-domain-removal-and-csccmd-exe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Handling Bogus Domains using SMTP Connectors in Exchange</title>
		<link>http://www.jephens.com/2009/03/12/handling-bogus-domains-using-smtp-connectors-in-exchange/</link>
		<comments>http://www.jephens.com/2009/03/12/handling-bogus-domains-using-smtp-connectors-in-exchange/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 17:59:53 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[smtp connector]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=128</guid>
		<description><![CDATA[Talking about SMTP Connectors in an earlier post got me to thinking of another way we use the SMTP Connectors in Exchange. A client has a (horribly behaved) legacy piece of software that, when faced with a customer with no email address on file, sends an email to an address it makes up in a [...]]]></description>
			<content:encoded><![CDATA[<p>Talking about SMTP Connectors in an earlier post got me to thinking of another way we use the SMTP Connectors in Exchange.</p>
<p>A client has a (horribly behaved) legacy piece of software that, when faced with a customer with no email address on file, sends an email to an address it makes up in a legitimate domain. So, for a long time, they were bombarding this innocent third party domain with mail that was destined to go nowhere. </p>
<p>This was eating bandwidth, processing cycles and the like, so we tried to put an end to it by appealing to the developers. They were not interested in fixing the old program, it would continue to spit out its bogus mail.</p>
<p>We created an SMTP Connector in Exchange to handle delivery to the legitimate domain. (It should be noted that the domain probably wasn't legit when the program was written, but with the .com explosion, it became legit. It's also not a domain anyone would be sending mail to in the normal course of business... it's not like this is for AOL.COM or anything...)</p>
<p>We set the connector so in the "address space" we listed our desired domain. We checked off "Forward all mail thru this connector to the following smart hosts"</p>
<p><em>... and this is where we get tricky ...</em></p>
<p>... we put a non-routable IP address in the smart host field. (And remember to enclose the IP address in brackets - i.e., [10.99.99.88] )</p>
<p>On the Delivery Options tab, when it asks when it should deliver, we tell it to "Never Run"</p>
<p>And that does the trick. We no longer pester the legit domain, we don't eat any bandwidth, everyone's happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/03/12/handling-bogus-domains-using-smtp-connectors-in-exchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bulk Deleting Outbound SMTP Queues in MS Exchange</title>
		<link>http://www.jephens.com/2009/03/11/bulk-deleting-outbound-smtp-queues-in-ms-exchange/</link>
		<comments>http://www.jephens.com/2009/03/11/bulk-deleting-outbound-smtp-queues-in-ms-exchange/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 07:59:41 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[exchange]]></category>
		<category><![CDATA[mail queue]]></category>
		<category><![CDATA[smtp connector]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=126</guid>
		<description><![CDATA[A client is constantly getting hit with email attacks, and one such attack flooded the Exchange box with a couple hundred bogus NDRs which were trying to be delivered. Removing these queues by hand is a royal pain, so I recalled a simple little kludge that would get all the bad mail into one queue [...]]]></description>
			<content:encoded><![CDATA[<p>A client is constantly getting hit with email attacks, and one such attack flooded the Exchange box with a couple hundred bogus NDRs which were trying to be delivered.</p>
<p>Removing these queues by hand is a royal pain, so I recalled a simple little kludge that would get all the bad mail into one queue so it could be deleted in one fell swoop instead of having to right click on every queue and choose "Delete all messages (No NDR)"</p>
<p>The steps are laid out pretty explicitly in <a href="http://technet.microsoft.com/en-us/kb/kb00324958.aspx#6">a KB article from Microsoft</a>, so I won't go into great detail here. I'll just give you the overview.</p>
<p>All of the following steps are done using the Exchange System Manager. I did this using Exchange 2000, it should work for Exchange 2003. I haven't played with 2007 at all -- three servers?!? -- so I have no clue if this is still how it works.</p>
<p>First, you need to make sure all your good mail is out of the queue, so I tend to do this at 3 AM when I know that it's been a few hours since anyone has tried to send any out-of-office mail and anything I'm going to find in the queue is crap. YMMV.</p>
<p>Next, stop the SMTP Virtual Server for the site.</p>
<p>Create a new SMTP Connector which is going to take all of the junk mail.  Make sure the "Address Space" properties are set that SMTP is accepting for * (all domains) at a cost of 1.</p>
<p>Restart the SMTP Virtual Server.</p>
<p>All of the mail should now go into this new queue you created.  Right click the queue, choose "Delete all messages (No NDR)"</p>
<p>Refresh the queue list a few times to make sure all messages are gone.</p>
<p>Stop the SMTP Virtual Server.</p>
<p>Delete the SMTP Connector you just made.</p>
<p>Restart the SMTP Virtual Server.</p>
<p>Mail should start flowing as usual.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2009/03/11/bulk-deleting-outbound-smtp-queues-in-ms-exchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding a Group Membership Based Shortcut to a Windows Desktop Upon Login</title>
		<link>http://www.jephens.com/2008/11/21/adding-a-group-membership-based-shortcut-to-a-windows-desktop-upon-login/</link>
		<comments>http://www.jephens.com/2008/11/21/adding-a-group-membership-based-shortcut-to-a-windows-desktop-upon-login/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 07:16:13 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[desktop shortcut]]></category>
		<category><![CDATA[group membership]]></category>
		<category><![CDATA[icon]]></category>
		<category><![CDATA[vbscript]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=70</guid>
		<description><![CDATA[(That's a wordy title, isn't it?) Had an issue with a client who needed to drop a shortcut to a Remote Desktop connection on certain desktops based upon their membership in a group. A little vbscripting, and we got it done. It's pretty simple. (You can cut and paste the script below. Change the variables [...]]]></description>
			<content:encoded><![CDATA[<p>(That's a wordy title, isn't it?)</p>
<p>Had an issue with a client who needed to drop a shortcut to a Remote Desktop connection on certain desktops based upon their membership in a group.</p>
<p>A little vbscripting, and we got it done. It's pretty simple. (You can cut and paste the script below. Change the variables to suit your environment. Word wrapping on the screen shouldn't carry over to your editing tool of choice -- mine is <a href="http://www.textpad.com" target="_blank">TextPad</a>.)</p>
<div class="code" style="margin:6px; margin-top:5px; margin-bottom: 2em;">Option Explicit<br />
'initialize our variables</p>
<p>Dim objUser, CurrentUser<br />
Dim strGroup<br />
Dim wShell<br />
Dim strDesktop, objFSO<br />
Dim link, GroupName</p>
<p>' Init our objects<br />
Set wShell = CreateObject("WScript.Shell")<br />
Set objFSO = CreateObject("Scripting.FileSystemObject")</p>
<p>Set objUser = CreateObject("ADSystemInfo")<br />
Set CurrentUser = GetObject("LDAP://" &amp; objUser.UserName)</p>
<p>'This is the magic... our group membership<br />
strGroup = LCase(Join(CurrentUser.MemberOf))</p>
<p>' logic testing<br />
If InStr(strGroup, lcase(GroupName)) Then</p>
<p>' get the desktop folder path. this works for all locations<br />
' redirected folders, etc.</p>
<p>strDesktop = WShell.SpecialFolders("Desktop")</p>
<p>' now we create our Shortcut object, and give it a name<br />
Set link = wShell.CreateShortcut(strDesktop &amp; "\Connect to TermServer.lnk")</p>
<p>' set the location where you store the file on the server<br />
link.TargetPath = "\\fileserver\path\server.rdp"</p>
<p>' and we have to save it to make it stick.<br />
link.Save</p>
<p>End If</p>
<p>WScript.Quit</p></div>
<p>Easy peasy.</p>
<p>So then, I add the script to a domain level Group Policy object I have called, logically enough, "Login Scripts" and it runs on each login, making sure our little icon is where it belongs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2008/11/21/adding-a-group-membership-based-shortcut-to-a-windows-desktop-upon-login/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Logon Failure errors in XP Home</title>
		<link>http://www.jephens.com/2008/09/24/fixing-logon-failure-errors-in-xp-home/</link>
		<comments>http://www.jephens.com/2008/09/24/fixing-logon-failure-errors-in-xp-home/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 19:46:42 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[file sharing]]></category>
		<category><![CDATA[logon failure]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=53</guid>
		<description><![CDATA[A client running XP Home today had an issue with a machine running slowly, and in the (ab)normal course of troubleshooting, we came across some errors in the event viewer that caused us to reset the security descriptors back to their defaults... and in doing so, we broke his printer sharing. (Oops!) For those of [...]]]></description>
			<content:encoded><![CDATA[<p>A client running XP Home today had an issue with a machine running slowly, and in the (ab)normal course of troubleshooting, we came across some errors in the event viewer that caused us to reset the security descriptors back to their defaults... and in doing so, we broke his printer sharing. (Oops!)</p>
<p>For those of you at home, we <a href="http://support.microsoft.com/kb/313222" target="_blank">reset the security back to baseline</a> via the secedit utility -- something we carry with us on our USB keys since it doesn't ship with XP Home:</p>
<p style="padding-left: 30px;"><span class="userInput">secedit /configure /cfg 				%windir%\repair\secsetup.inf /db secsetup.sdb /verbose</span></p>
<p>So, since it's XP Home, we didn't have a lot of tools available to us, so we replied upon the Win2k3 Resource Kit tools to help us reset the Guest account, so it had access to the local printer:</p>
<p>The remote user was getting the message "Logon failure: the user has not been granted the requested logon type at this computer"</p>
<p>So we confirmed the guest account was turned on via:</p>
<p style="padding-left: 30px;">net user guest /active:yes</p>
<p>And then we allowed it to logon from the network. (Case sensitivity rules in effect):</p>
<p style="padding-left: 30px;">ntrights +r SeNetworkLogonRight -u Guest</p>
<p>And we had to remove the DENY right, since it takes precedence in all transactions:</p>
<p style="padding-left: 30px;">ntrights -r SeDenyNetworkLogonRight -u Guest</p>
<p>Once we did that, the other computer was able to print again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2008/09/24/fixing-logon-failure-errors-in-xp-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Appliances&#8217; LAMP, WordPress and mod_rewrite</title>
		<link>http://www.jephens.com/2008/08/10/virtual-appliances-lamp-wordpress-and-mod_rewrite/</link>
		<comments>http://www.jephens.com/2008/08/10/virtual-appliances-lamp-wordpress-and-mod_rewrite/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 14:31:10 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=45</guid>
		<description><![CDATA[I've been a big fan of VirtualAppliances' virtual machines for awhile now and have used its LAMP appliance for a variety of low-power applications, but I've wondered why it doesn't ship with mod_rewrite enabled, and why there's always a step missing from turning it on. First up, we need to symbolically link the module from [...]]]></description>
			<content:encoded><![CDATA[<p>I've been a big fan of <a href="http://www.virtualappliances.net" target="_blank">VirtualAppliances</a>' virtual machines for awhile now and have used its LAMP appliance for a variety of low-power applications, but I've wondered why it doesn't ship with mod_rewrite enabled, and why there's always a step missing from turning it on.</p>
<p>First up, we need to symbolically link the module from /etc/apache2/mods-available to /etc/apache2/mods-enabled:</p>
<p><code>sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled</code></p>
<p>That's usually what all the online guides mention, but there's still one more step -- one I always forget... we need to edit the default site to allow .htaccess to control the mod_rewrite rules...</p>
<p>So, go into /etc/apache2/sites-available</p>
<p>Edit the default site definition, and make sure you change the AllowOverride to ALL in the /var/www/html section:<code><br />
 &lt;Directory /var/www/html&gt;<br />
 Options Indexes FollowSymLinks MultiViews<br />
 AllowOverride All<br />
 Order allow,deny<br />
 allow from all<br />
 &lt;/Directory&gt;<br />
</code><br />
... and now your WordPress permanent links will work. <img src='http://www.jephens.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2008/08/10/virtual-appliances-lamp-wordpress-and-mod_rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stopping Shell Shortcuts from Resolving</title>
		<link>http://www.jephens.com/2008/07/02/stopping-shell-shortcuts-from-resolving/</link>
		<comments>http://www.jephens.com/2008/07/02/stopping-shell-shortcuts-from-resolving/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 05:18:48 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=33</guid>
		<description><![CDATA[We love Terminal Server. We think its a pretty great solution for small businesses; put a little more money into a server and you can keep your older hardware around. In setting up our terminal server environments, we like putting shortcuts to various shares on the desktop. However, the server always wants to convert them [...]]]></description>
			<content:encoded><![CDATA[<p>We love Terminal Server. We think its a pretty great solution for small businesses; put a little more money into a server and you can keep your older hardware around.</p>
<p>In setting up our terminal server environments, we like putting shortcuts to various shares on the desktop. However, the server always wants to convert them from <strong>\\server\data</strong> to their local equivalent, <strong>d:\data</strong>.</p>
<p>But a quick registry entry will eliminate that.</p>
<p>Create a new DWORD value of "<strong>LinkResolveIgnoreLinkInfo</strong>" in this key:<br />
<code><br />
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer<br />
</code><br />
... and set it to a data value of "1"</p>
<p>Reboot and that'll do it.</p>
<p>(You can also put this in the CURRENT_USER key, but I'm not sure why you'd want to.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2008/07/02/stopping-shell-shortcuts-from-resolving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remotely Find MAC Addresses on Your Windows Network</title>
		<link>http://www.jephens.com/2008/06/30/remotely-find-mac-addresses-on-your-windows-network/</link>
		<comments>http://www.jephens.com/2008/06/30/remotely-find-mac-addresses-on-your-windows-network/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 16:38:01 +0000</pubDate>
		<dc:creator>Jeff Knapp</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.jephens.com/?p=28</guid>
		<description><![CDATA[I had to find the MAC address of a remote machine on my network this morning. Happily, WindowsXP (and above) make this easy. They include a tool called getmac which does just that -- it gets the MAC address of any machine on the local network. (This utility first made its appearance, it seems, as [...]]]></description>
			<content:encoded><![CDATA[<p>I had to find the MAC address of a remote machine on my network this morning.  Happily, WindowsXP (and above) make this easy.</p>
<p>They include a tool called <strong>getmac</strong> which does just that -- it <strong>gets</strong> the <strong>MAC</strong> address of any machine on the local network.</p>
<p>(This utility first made its appearance, it seems, as part of the Windows 2000 Resource Kit, and is available as a <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=00735A58-E6A8-4A8A-A23E-85B2BA7CCBF5&amp;displaylang=en">download from Microsoft</a>.)</p>
<p>The tool couldn't be simpler to use, just open a command prompt and type:</p>
<p><strong>getmac /s &lt;computername&gt;</strong></p>
<p>It then spits back:</p>
<pre>Physical Address Transport Name
=================== =========================================================
00-00-00-XX-XX-XX \Device\Tcpip_{0AB4C22A-1EEE-AAAA-XXXX-0X0X0X0X0X0X},
 \Device\NwlnkIpx</pre>
<p>There are additional switches you can use to format the output or run the command under different credentials (from the <a href="http://technet.microsoft.com/en-us/library/bb490913(TechNet.10).aspx" target="_blank">TechNet article</a>):</p>
<p><strong>/u</strong> <strong> </strong> <strong> <em>Domain</em> </strong> <strong>\</strong> <strong> <em>User</em> </strong> <strong> </strong> <strong>: </strong>Runs the command with the account permissions of the user specified by <em>User</em> or <em>Domain</em>\<em>User</em>. The default is the permissions of the current logged on user on the computer issuing the command.</p>
<p><strong>/p</strong> <strong> </strong> <strong> <em>Password</em> </strong> <strong> </strong> <strong>: </strong>Specifies the password of the user account that is specified in the <strong>/u</strong> parameter.</p>
<p><strong>/fo</strong> <strong> {</strong> <strong>TABLE</strong> <strong>|</strong> <strong>LIST</strong> <strong>|</strong> <strong>CSV</strong> <strong>} </strong> <strong>: </strong>Specifies the format to use for the query output. Valid values are <strong>TABLE</strong>, <strong>LIST</strong>, and <strong>CSV</strong>. The default format for output is <strong>TABLE</strong>.</p>
<p><strong>/nh</strong> <strong> </strong> <strong>: </strong>Suppresses column header in output. Valid when the <strong>/fo</strong> parameter is set to <strong>TABLE</strong> or <strong>CSV</strong>.</p>
<p><strong>/v</strong> <strong> </strong> <strong>: </strong>Specifies that the output display verbose information.</p>
<p><strong>/?</strong> <strong>: </strong>Displays help at the command prompt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jephens.com/2008/06/30/remotely-find-mac-addresses-on-your-windows-network/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
