<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7977773</id><updated>2012-01-31T15:37:57.987-08:00</updated><category term='ACL'/><category term='scripting'/><category term='organization unit'/><category term='user accounts'/><category term='VMWare'/><category term='tool'/><category term='dsacls.exe'/><category term='registry'/><category term='adfind.exe'/><category term='fdeploy.log'/><category term='sed.exe'/><category term='Network Connect'/><category term='Citrix'/><category term='vbsscript'/><category term='WSH'/><category term='Group Policy'/><category term='file share'/><category term='sed'/><category term='NAT'/><category term='Utility'/><category term='800A01AD'/><category term='VPN'/><category term='tail'/><category term='awk'/><category term='ldap'/><category term='PowerShell'/><category term='NAT32'/><category term='redirector failed to determine the connection type offline files'/><category term='Active Directory'/><category term='cscript'/><category term='grep'/><category term='folder redirection'/><category term='XenApp'/><category term='OU'/><category term='wscript'/><category term='Juniper'/><category term='vbs'/><category term='Scripting.FileSystemObject'/><category term='ACE'/><category term='group policy object'/><category term='ADMX'/><category term='AD'/><category term='reg.exe'/><category term='gpo'/><category term='scheduled task'/><title type='text'>Trentent -- One and Only.</title><subtitle type='html'>Well that was easy...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7977773.post-2440959434536855583</id><published>2012-01-31T15:25:00.000-08:00</published><updated>2012-01-31T15:37:58.004-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XenApp'/><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Citrix'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>PowerShell to Clone VM's</title><content type='html'>I need to create a Provisioning Server of my own.  We don't want to purchase the software to do so and we may not need to do so...  VMWare has PowerCLI which may provide enough to do the following:&lt;br /&gt;&lt;br /&gt;1) Notify the VM that it needs to disable Citrix logins&lt;br /&gt;2) Have the VM disable logins and then check for logins.  If none are found kick-off the cloning process.  Kick off consists of:&lt;br /&gt;2a) Unjoin from the domain&lt;br /&gt;2b) Shutdown&lt;br /&gt;If users are still logged in, log them off forcefully at midnight and start the process&lt;br /&gt;3) Use VMWare Templates to clone the VM with the VM name.&lt;br /&gt;4) Shutdown original VM's with the same names&lt;br /&gt;5) Startup new VM's and join to domain...&lt;br /&gt;&lt;br /&gt;Done?&lt;br /&gt;&lt;br /&gt;I have a script that does the cloning...  I got it from this site:&lt;br /&gt;http://www.vtesseract.com/post/16447807254/clone-list-powercli-function&lt;br /&gt;http://communities.vmware.com/docs/DOC-18155&lt;br /&gt;&lt;br /&gt;I had issues with running it though.  For some reason my PowerShell wouldn't run it with the comments in it so I had to take them out:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;function Clone-List{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Param(&lt;br /&gt;[CmdletBinding()]&lt;br /&gt;[Parameter(ValueFromPipeline=$true,&lt;br /&gt; Position=0,&lt;br /&gt; Mandatory=$true,&lt;br /&gt; HelpMessage="Insert Message")]&lt;br /&gt; [ValidateNotNullOrEmpty()]&lt;br /&gt; $InputObject,&lt;br /&gt;[Parameter(Position=1,&lt;br /&gt; Mandatory=$false,&lt;br /&gt; HelpMessage="Insert Preferred Folder")]&lt;br /&gt; $folder,&lt;br /&gt;[Parameter(Position=2,&lt;br /&gt; Mandatory=$false,&lt;br /&gt; HelpMessage="Insert Preferred Target Datastore")]&lt;br /&gt; $datastore,&lt;br /&gt;[Parameter(Position=3,&lt;br /&gt; Mandatory=$false,&lt;br /&gt; HelpMessage="Insert Preferred Target Host")]&lt;br /&gt; $vmhost,&lt;br /&gt;[Parameter(Position=4,&lt;br /&gt; Mandatory=$false,&lt;br /&gt; HelpMessage="Insert Preferred Disk Storage Format")]&lt;br /&gt; [ValidateSet("Thick","Thin")]&lt;br /&gt; $format = "Thin"&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PROCESS{&lt;br /&gt; $InputObject | %{&lt;br /&gt;  $vm = Get-VM $_&lt;br /&gt;  $name = $vm.name&lt;br /&gt;  $newname = -join("clone-",$name)&lt;br /&gt;  If ($datastore -eq $null){&lt;br /&gt;   $datastore = Get-Datastore -VM $vm&lt;br /&gt;   }&lt;br /&gt;  If ($folder -eq $null){&lt;br /&gt;   $folder = $vm.Folder&lt;br /&gt;   }&lt;br /&gt;  If ($vmhost -eq $null){&lt;br /&gt;   $vmhost = Get-Cluster -VM $vm | Get-VMHost | Get-Random | Where{$_ -ne $null}&lt;br /&gt;   }&lt;br /&gt; New-VM -Name $newname -VM $vm -Location $folder -Datastore $datastore -VMHost $vmhost -DiskStorageFormat $format -RunAsync&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can run it with a command like so:&lt;br /&gt;&lt;blockquote&gt;Get-VM MyVM | Clone-List&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I will need to modify this script to see if I can use VMWare Templates (I think that's the right terminology) and Citrix XA PowerShell to see if I can get this to work...  We shall see :)&lt;br /&gt;&lt;br /&gt;EDIT - It's not VMWare Templates...  It's OSCustomizationSpec I think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-2440959434536855583?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/2440959434536855583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=2440959434536855583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2440959434536855583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2440959434536855583'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2012/01/powershell-to-clone-vms.html' title='PowerShell to Clone VM&apos;s'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-387377282209886738</id><published>2012-01-11T10:08:00.000-08:00</published><updated>2012-01-11T10:12:46.093-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XenApp'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Cool PowerShell commands for manipulating XenApp</title><content type='html'>After installing the XenApp 6 SDK you can do some neat PowerShell scripts to help move things around.  I recently created a test farm and needed a way to move all the applications and their settings from the original farm.  These commands did it:&lt;br /&gt;&lt;br /&gt;First: Export the XenApp configuration&lt;br /&gt;&lt;br /&gt;http://www.jasonconger.com/post/migrate-citrix-xenapp-6-folder-structure-using-powershell/&lt;br /&gt;http://www.jasonconger.com/post/export-and-import-citrix-xenapp-6-published-applications-using-powershell/&lt;br /&gt;&lt;br /&gt;Get-XAApplicationReport * | Export-Clixml c:\testingApps.xml&lt;br /&gt;&lt;br /&gt;Copy C:\testingapps.xml to the new server.&lt;br /&gt;Create the folder structure:&lt;br /&gt;&lt;br /&gt;Import-Clixml c:\testingapps.xml | New-XAFolder&lt;br /&gt;&lt;br /&gt;Load your previous application settings:&lt;br /&gt;Import-Clixml c:\testingApps.xml | New-XAApplication -WorkerGroupNames $null&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-387377282209886738?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/387377282209886738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=387377282209886738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/387377282209886738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/387377282209886738'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2012/01/cool-powershell-commands-for.html' title='Cool PowerShell commands for manipulating XenApp'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-4937303658758998986</id><published>2011-11-18T14:09:00.000-08:00</published><updated>2011-11-18T14:10:22.181-08:00</updated><title type='text'>Group Creation Script</title><content type='html'>The final script:&lt;br /&gt;&lt;blockquote&gt;:This script will create the proper domain local group and global groups&lt;br /&gt;:The only input this script needs is the UNC path to the folder.  At the end&lt;br /&gt;:of this script the only thing you'll need to do is add the users from the actual&lt;br /&gt;:folder to the global group.&lt;br /&gt;:&lt;br /&gt;:eg create-groups.cmd "\\file01\HR\HR Support Group\HR Team\HR Support Services"&lt;br /&gt;&lt;br /&gt;SET /P Permissions=What permissions will this group have ([F]ULL/[M]ODIFIY/[RO]READ ONLY)?&lt;br /&gt;&lt;br /&gt;IF /I '%PERMISSIONS%' EQU 'F' SET PERMISSIONS=FULL&lt;br /&gt;IF /I '%PERMISSIONS%' EQU 'M' SET PERMISSIONS=MODIFY&lt;br /&gt;IF /I '%PERMISSIONS%' EQU 'RO' SET PERMISSIONS=RO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:ECHO %1 |sed "s/\\\\//g"|sed "s/\\/\./g" | sed "s/\"//g" &lt;br /&gt;&lt;br /&gt;:We parse the command line for the UNC structure, now we need to find the last folder&lt;br /&gt;for /F "tokens=*" %%A IN ('ECHO %1 ^|sed ^"s/\\\\//g^"^|sed ^"s/\\/\./g^" ^| sed ^"s/\^"//g^"') DO set groupname=%%A&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;set str=%groupname%&lt;br /&gt;set N=0&lt;br /&gt;setLocal EnableDELAYedExpansion&lt;br /&gt;&lt;br /&gt;:loop&lt;br /&gt;if !N! equ 55 (&lt;br /&gt;goto :exceedcharacterquota&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;set /A N+=1&lt;br /&gt;&lt;br /&gt;ECHO N=!N!&lt;br /&gt;if "!str:~1!" neq "" (&lt;br /&gt;set str=!str:~1!&lt;br /&gt;goto :loop&lt;br /&gt;)&lt;br /&gt;goto :skip-string-modification&lt;br /&gt;&lt;br /&gt;:if string length exceeds 55 chars, take the first 25 chars and the last 25 chars with an ellipse (...)&lt;br /&gt;:in between.&lt;br /&gt;:exceedcharacterquota&lt;br /&gt;set string-part-one=!groupname:~0,25!&lt;br /&gt;set string-part-two=!groupname:~-25!&lt;br /&gt;set GROUPNAME=!string-part-one!...!string-part-two!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:skip-string-modification&lt;br /&gt;setLocal disableDELAYedExpansion&lt;br /&gt;:Remove any trailing spaces&lt;br /&gt;for /F "tokens=*" %%A IN ('ECHO %GROUPNAME% ^|sed ^"s/ $//g^"') DO set groupname=%%A&lt;br /&gt;ECHO GROUP=%GROUPNAME%&lt;br /&gt;&lt;br /&gt;:Sets OU to domain local resource group...&lt;br /&gt;SET OUL=OU=Resource,OU=Security Groups,OU=AD Project 3,DC=CCS,DC=CORP&lt;br /&gt;dsadd group "CN=F.lg.%GROUPNAME%.%PERMISSIONS%,%OUL%" -desc %1 -secgrp yes -scope l&lt;br /&gt;&lt;br /&gt;:Sets OU to Global group...&lt;br /&gt;SET OUG=OU=Global,OU=Security Groups,OU=AD Project 3,DC=CCS,DC=CORP&lt;br /&gt;dsadd group "CN=gg.%GROUPNAME%.%PERMISSIONS%,%OUG%" -desc %1 -secgrp yes -scope g&lt;br /&gt;&lt;br /&gt;:adds the global group to the domain local group&lt;br /&gt;dsmod group "CN=F.lg.%GROUPNAME%.%PERMISSIONS%,%OUL%" -addmbr "CN=gg.%GROUPNAME%.%PERMISSIONS%,%OUG%"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-4937303658758998986?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/4937303658758998986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=4937303658758998986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4937303658758998986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4937303658758998986'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/11/group-creation-script.html' title='Group Creation Script'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6749188811795080442</id><published>2011-11-18T13:51:00.000-08:00</published><updated>2011-11-18T13:58:32.171-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Count Characters in a Batch File</title><content type='html'>I have an issue where I need to ensure I don't exceed a certain number of characters in a script.  Specifically, I cannot exceed 64 characters while making a group through script in AD.  To do this I came up with the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ECHO OFF&lt;br /&gt;:Set some variables, the string variable, a second string variable and our starting count.&lt;br /&gt;set str=\\fileservertestserver\accounting\Budgets\Budgets 2012\2012 Budget GA Loads&lt;br /&gt;set str2=%str%&lt;br /&gt;set N=0&lt;br /&gt;setLocal EnableDELAYedExpansion&lt;br /&gt;&lt;br /&gt;:the loop works like so...  we check to see if N has been incremented to 55 (our &lt;br /&gt;:target number of characters).  If it has, it goes to a new routine which creates&lt;br /&gt;:our path.  If it does not, we increment N by one then check to see if the string&lt;br /&gt;:has reached a NULL character.  If it has not reached "55" then goto loop and repeat.&lt;br /&gt;:loop&lt;br /&gt;if !N! equ 55 (&lt;br /&gt;goto :exceedcharacterquota&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;set /A N+=1&lt;br /&gt;&lt;br /&gt;ECHO N=!N!&lt;br /&gt;if "!str:~1!" neq "" (&lt;br /&gt;set str=!str:~1!&lt;br /&gt;goto :loop&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;:if string length exceeds 55 chars, take the first 25 chars and the last 25 chars with an ellipse (...)&lt;br /&gt;:in between.&lt;br /&gt;:exceedcharacterquota&lt;br /&gt;set string-part-one=!str2:~0,25!&lt;br /&gt;set string-part-two=!str2:~-25!&lt;br /&gt;echo !string-part-one!...!string-part-two!&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6749188811795080442?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6749188811795080442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6749188811795080442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6749188811795080442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6749188811795080442'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/11/count-characters-in-batch-file.html' title='Count Characters in a Batch File'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6388395386817580850</id><published>2011-11-07T09:08:00.001-08:00</published><updated>2011-11-07T09:10:29.090-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPN'/><category scheme='http://www.blogger.com/atom/ns#' term='NAT'/><category scheme='http://www.blogger.com/atom/ns#' term='Network Connect'/><category scheme='http://www.blogger.com/atom/ns#' term='Juniper'/><category scheme='http://www.blogger.com/atom/ns#' term='NAT32'/><title type='text'>Working around a VPN administrator issue...</title><content type='html'>We recently had a workstation that was sent to a user that didn't have the user in the local administrator group.  This should be an easy fix, just add the user to that group.  We could not though, as the user was a domain user and the computer was not on a network with a domain controller.  I did have the local administrator account password and could login with it, but the VPN technology we use (Juniper's Network Connect) requires local administrator rights to install it (which I was able to do) but is setup to verify that the user account is a domain user account.  Without the user account being from the domain and a local administrator account, Network Connect will not connect to our network.&lt;br /&gt;&lt;br /&gt;Well, this is a bit of a pickle.  Since this user was in Victoria BC and I was in Calgary AB, I needed to find a way to connect their computer to our domain network so they could authenticate against our DC and then I could add their account to the local admin group.&lt;br /&gt;&lt;br /&gt;To do this I did the following:&lt;br /&gt;&lt;br /&gt;1) Using the local administrator account on the remote computer, install TeamViewer and set it to launch on Windows Startup.&lt;br /&gt;2) Setup unattended access through TeamViewer and install the VPN client on the remote computer and my local computer.&lt;br /&gt;3) The network the remote computer was on was a 192.168.X.X and our network is a 10.X.X.X.  So I set a persistent route on the remote computer to route all traffic to the 10/8 network to the VPN ip on *my* (the local) end "route add 10.0.0.0 mask 255.0.0.0 7.154.200.11 -p"&lt;br /&gt;4) Add a DNS entry on both the Teamviewer and ethernet adapter of the remote computer to the DNS on one of the computers in the Domain (a 10.X.X.X address).&lt;br /&gt;5) I downloaded and installed NAT32 onto the local computer.  I configured it like so:&lt;br /&gt;Teamviewer VPN Adapter - Private&lt;br /&gt;Local Network Adapter - Internet&lt;br /&gt;"Share the Windows IP Address"&lt;br /&gt;&lt;br /&gt;Then NAT32 generated a screen like so:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-aWaswJic3OA/TrgQnL7oqMI/AAAAAAAAAIM/mSP9AcIq6dU/s1600/nat32.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 302px; height: 148px;" src="http://3.bp.blogspot.com/-aWaswJic3OA/TrgQnL7oqMI/AAAAAAAAAIM/mSP9AcIq6dU/s400/nat32.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5672301996077000898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From here, I connected to the user through Teamviewer's VPN and via Remote Control.  I confirmed I could ping the DNS server on the domain from the remote computer.  I rebooted the computer, phoned the user and found out when it was at the CTRL-ALT-DEL screen.  Once it was at that stage, I connected to it, from TeamViewer's VPN, and then I could login to the domain.  While under the users account, I started an elevated command-prompt and opened compmgmt.msc and added her domain account to the local admin account.  I then had her log off, and via Teamviewer's remote control, logged back on via the local admin account.  I then removed the persistent static route and logged back off and had the user log back in.  From here, she had all the rights she needed to launch Network Connect and Network Connect saw that this computer is connected to the domain and allowed connection.&lt;br /&gt;&lt;br /&gt;http://kb.juniper.net/InfoCenter/index?page=content&amp;id=KB9084&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6388395386817580850?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6388395386817580850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6388395386817580850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6388395386817580850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6388395386817580850'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/11/working-around-vpn-administrator-issue.html' title='Working around a VPN administrator issue...'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-aWaswJic3OA/TrgQnL7oqMI/AAAAAAAAAIM/mSP9AcIq6dU/s72-c/nat32.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-2801758623685020444</id><published>2011-10-25T09:01:00.000-07:00</published><updated>2011-10-25T09:13:07.082-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Group Policy'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='ADMX'/><category scheme='http://www.blogger.com/atom/ns#' term='Utility'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><title type='text'>Cool tool!</title><content type='html'>Mariano Sergio Cosentino created a script that will convert registry keys into ADMX template files.  This is awesome as the alternative to deploying large number of registry keys and values is typically a startup script with regedit.exe /s %regfile%.  &lt;br /&gt;&lt;br /&gt;http://mscosentino-en.blogspot.com/2010/02/convert-registry-file-to-admx-policy.html&lt;br /&gt;&lt;br /&gt;Tool is available here:&lt;br /&gt;http://www.mscosentino.com/desarrollos/reg2admxl/reg_2_admx.vbs&lt;br /&gt;&lt;br /&gt;Usage is: CSCRIPT REG_2_ADMXL.vbs registry-file language [name]&lt;br /&gt;&lt;br /&gt;I used this tool to create a ADMX template of the following registry key:&lt;br /&gt;KEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem&lt;br /&gt;&lt;br /&gt;We use Microsoft fRX and it utilizes this key to determine your mail prefences if you're using exchange.  If you have the old Office 2000/2003 (IIRC) you should have this key.  2007 and greater now use a different method of storing email account information (apparently).  This content is generated by using the "Mail" control panel icon.  We used this tool to prestage the server name and a "Windows Messaging Profile" so that when you try to email from fRX you don't go through a complicated wizard asking for things like "server name".  If you're organization is like ours, your internal email server name is something users won't know and won't be able to guess (eg, 3-digit-company-abbr,3-digit-code-for-prod-or-dev,3-digit-code-for-virtual-or-physical,3-digit-code-for-server-role(eg EXC-exchange),3-digit-code-for-number).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-2801758623685020444?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/2801758623685020444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=2801758623685020444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2801758623685020444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2801758623685020444'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/10/cool-tool.html' title='Cool tool!'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5174230113935570334</id><published>2011-10-14T10:15:00.000-07:00</published><updated>2011-10-14T10:54:01.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adfind.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='user accounts'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>LDAP query for *just* users</title><content type='html'>We have numerous "mailbox only" user accounts in our AD.  I've been asked for a query of all the user accounts on our domain.  The query needs to exclude these accounts and disabled accounts as we're only interested in active user accounts.  This is what I came up with:&lt;br /&gt;&lt;br /&gt;adfind -f "&amp;(objectcategory=person)(samaccountname=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)(!(msExchRecipientTypeDetails=4)(!(msExchRecipientDisplayType=7)(!(msExchRecipientDisplayType=8)(!(extensionattribute1=Service Account))))))" -csv -csvdelim ;&lt;br /&gt;&lt;br /&gt;This query does the following:&lt;br /&gt;Find all user accounts (objectcategory=person)(samaccountname=*)&lt;br /&gt;But NOT&lt;br /&gt;Disabled accounts (userAccountControl:1.2.840.113556.1.4.803:=2)&lt;br /&gt;Exchange Shared Mailboxes: (msExchRecipientTypeDetails=4)&lt;br /&gt;Exchange Rooms: (msExchRecipientDisplayType=7)&lt;br /&gt;Exchange Equipment: (msExchRecipientDisplayType=8)&lt;br /&gt;Service Accounts: (extensionattribute1=Service Account)&lt;br /&gt;&lt;br /&gt;MS Software usually adds "SERVICE ACCOUNT" to the extensionattribute1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5174230113935570334?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5174230113935570334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5174230113935570334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5174230113935570334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5174230113935570334'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/10/ldap-query-for-just-users.html' title='LDAP query for *just* users'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-2328488352184851285</id><published>2011-09-15T07:02:00.001-07:00</published><updated>2011-09-15T07:06:37.666-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sed.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='file share'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduled task'/><category scheme='http://www.blogger.com/atom/ns#' term='reg.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Change file shares via scripting</title><content type='html'>I've come across a problem where users are filling up their hard disks and we need to move the highest utilization users to a new disk.  In order to accomplish this I've setup a robocopy to move their files to a new disk and have it constantly mirrored until after-hours; where we run this script to move the file shares:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;:backup original shares:&lt;br /&gt;reg export "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares" C:\shares-backup.reg /y&lt;br /&gt;&lt;br /&gt;setlocal enabledelayedexpansion&lt;br /&gt;:what we need to do is grab the user name and the key...&lt;br /&gt;for /f "tokens=1-2*" %%A IN ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares" ^| findstr /I /C:"E:\User Files\Corporate" ^| sed.exe "s/Path=E:\\User Files\\Corporate/Path=G:\\User Files\\Corporate/"') DO (&lt;br /&gt;echo  reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares  /v %%A /t %%B /D "%%C" /f&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;for /f "tokens=1-2*" %%A IN ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares" ^| findstr /I /C:"E:\User Files\Finance" ^| sed.exe "s/Path=E:\\User Files\\Finance/Path=G:\\User Files\\Finance/"') DO (&lt;br /&gt;echo  reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\Shares  /v %%A /t %%B /D "%%C" /f&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;net stop server /y&lt;br /&gt;net start server&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;What this script does is:&lt;br /&gt;1) Backs up the existing share structure&lt;br /&gt;2) Queries the file shares for the specific path of the share we're going to move&lt;br /&gt;3) Using SED.exe we change the drive letter from E: to G:&lt;br /&gt;4) Using reg.exe we overwrite the registry key with the new value&lt;br /&gt;5) we then stop and restart the server service to get the new shares working.&lt;br /&gt;&lt;br /&gt;And we set that up as a scheduled task to run after-hours :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-2328488352184851285?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/2328488352184851285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=2328488352184851285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2328488352184851285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2328488352184851285'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/09/change-file-shares-via-scripting.html' title='Change file shares via scripting'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1803222574429825732</id><published>2011-09-13T13:42:00.000-07:00</published><updated>2011-09-13T13:46:24.096-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sed.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='dsacls.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='OU'/><category scheme='http://www.blogger.com/atom/ns#' term='ACL'/><category scheme='http://www.blogger.com/atom/ns#' term='adfind.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='ACE'/><category scheme='http://www.blogger.com/atom/ns#' term='organization unit'/><title type='text'>Saving and restoring ACL's on OU's</title><content type='html'>Saving and moving OU ACLs&lt;br /&gt;&lt;br /&gt;I’ve written a batch file that will move ACLs from one OU to another.  It works by you outputting the results of a ACL from a OU to a text file, specifying the new OU in a batch file and inputting the text file you just created.  I use three utilities to accomplish this: adfind.exe, sed.exe and dsacls.exe.&lt;br /&gt;The command to save the text file is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;adfind -b "OU=Users,OU=LAB,DC=LAB,DC=CORP" -f (distinguishedName=OU=Users,OU=LAB,DC=LAB,DC=corp) -sddl++ -resolvesids -onlydacl ntsecuritydescriptor -sddlnotfilter ;inherited| sed.exe "s/;;/; ;/g" | sed.exe "s/;;/; ;/g" | sed.exe "s/;;/; ;/g" | sed.exe "s/;;/; ;/g" &gt; %PATHTOFILE%.txt&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;From here, you need to delete the header in the text file and the footer.&lt;br /&gt;Once that is done, run this script, changing the two variables at the top:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;:RESTORE-OU-ACL.CMD&lt;br /&gt;:Restore OU Properties&lt;br /&gt;SET TARGETOU=OU=Users Accounts,OU=AD Project 3,DC=LAB,DC=CORP&lt;br /&gt;SET TARGETFILE="New Text Document (5).txt"&lt;br /&gt;&lt;br /&gt;@ECHO OFF&lt;br /&gt;&lt;br /&gt;SETLOCAL ENABLEDELAYEDEXPANSION&lt;br /&gt;for /F "tokens=1-6 delims=;" %%A IN ('type %TARGETFILE%') DO (&lt;br /&gt;    SET PROP=&lt;br /&gt;    SET INHERIT=0&lt;br /&gt;    IF "%%C" EQU " " SET PROP=GA&lt;br /&gt;    ECHO CALL :PROPERTYACL %%C&lt;br /&gt;    CALL :PROPERTYACL %%C&lt;br /&gt;&lt;br /&gt;    ECHO CALL :INHERITANCE %%B&lt;br /&gt;    CALL :INHERITANCE %%B&lt;br /&gt;&lt;br /&gt;    SET PROPERTY=&lt;br /&gt;    IF /I "%%D" NEQ " " SET PROPERTY=%%D&lt;br /&gt;    ECHO PROPERTY=!PROPERTY!&lt;br /&gt;    SET TARGET=&lt;br /&gt;    IF /I "%%E" NEQ " " SET TARGET=%%E&lt;br /&gt;    ECHO TARGET=!TARGET!&lt;br /&gt;    ECHO dsacls "%TARGETOU%" !INHERIT! /G "%%F:!PROP!;!PROPERTY!;!TARGET!"&lt;br /&gt;    dsacls "%TARGETOU%" !INHERIT! /G "%%F:!PROP!;!PROPERTY!;!TARGET!"&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;GOTO:EOF&lt;br /&gt;&lt;br /&gt;:INHERITANCE&lt;br /&gt;REM We need to figure out what ACLS we're dealing with...&lt;br /&gt;FOR /F "tokens=*" %%Z IN ('ECHO %*') DO (&lt;br /&gt;  IF '!INHERIT!' EQU '/I:S' GOTO:EOF&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[CONT INHERIT]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET INHERIT=/I:T&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[CONT INHERIT][INHERIT ONLY]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET INHERIT=/I:S&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"INHERIT"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '1' SET INHERIT=/I:P&lt;br /&gt;  ECHO INHERIT=!INHERIT!&lt;br /&gt;)&lt;br /&gt;GOTO:EOF&lt;br /&gt;&lt;br /&gt;:PROPERTYACL&lt;br /&gt;REM We need to figure out what ACLS we're dealing with...&lt;br /&gt;FOR /F "tokens=*" %%Z IN ('ECHO %*') DO (&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"WRT PROP"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!WP&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"READ PROP"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!RP&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"CTL"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=CA&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[CR CHILD]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!CC&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[DEL CHILD]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!DC&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[LIST CHILDREN]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!LC&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[LIST OBJECT]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!LO&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[READ]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!GR&lt;br /&gt;  ECHO %%Z | FINDSTR /I /C:"[FC]"&lt;br /&gt;  IF '!ERRORLEVEL!' EQU '0' SET PROP=!PROP!GA&lt;br /&gt;&lt;br /&gt;  ECHO PROP=!PROP!&lt;br /&gt;)&lt;br /&gt;GOTO:EOF&lt;br /&gt;&lt;br /&gt;:/I:P = This Object Only                           *BLANK*&lt;br /&gt;:/I:S = Child Objects Only                         [CONT INERIT][INHERIT ONLY]&lt;br /&gt;:/I:T = This object and all child objects          [CONT INERIT]&lt;br /&gt;:Blank inheritance = /I:P&lt;br /&gt;:When "Properties" are set, it should be /I:S&lt;br /&gt;:When there are no properties listed at all ACL should be GA&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1803222574429825732?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1803222574429825732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1803222574429825732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1803222574429825732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1803222574429825732'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/09/saving-and-restoring-acls-on-ous.html' title='Saving and restoring ACL&apos;s on OU&apos;s'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1812892440548291830</id><published>2011-08-26T10:26:00.000-07:00</published><updated>2011-08-26T10:48:13.834-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting.FileSystemObject'/><category scheme='http://www.blogger.com/atom/ns#' term='vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='800A01AD'/><category scheme='http://www.blogger.com/atom/ns#' term='WSH'/><category scheme='http://www.blogger.com/atom/ns#' term='wscript'/><category scheme='http://www.blogger.com/atom/ns#' term='cscript'/><category scheme='http://www.blogger.com/atom/ns#' term='vbsscript'/><title type='text'>Issue with WSH (Scripting.FileSystemObject 800A01AD)</title><content type='html'>&lt;br /&gt;&lt;br /&gt;I recently had a Windows 2008 Server that was unable to execute a VBS script that works with other servers and other combinations of desktops.  I decided to break out Process Monitor and try and see if I can figure out what's going on...&lt;br /&gt;&lt;br /&gt;To simplify this process, I found this vbs script that trys to utilize the Scripting.FileSystemObject in a script:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;cscript Version.vbs&lt;br /&gt;&lt;br /&gt;The VBScript program follows:&lt;br /&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Dim objFSO, strFolder&lt;br /&gt;&lt;br /&gt;Call MsgBox("WSH Version: " &amp; Wscript.Version _&lt;br /&gt;    &amp; vbCrLF &amp; "VBScript major version: " &amp; ScriptEngineMajorVersion _&lt;br /&gt;    &amp; vbCrLf &amp; "VBScript minor version: " &amp; ScriptEngineMinorVersion)&lt;br /&gt;&lt;br /&gt;strFolder = "C:\Windows"&lt;br /&gt;&lt;br /&gt;Set objFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;If (objFSO.FolderExists(strFolder) = True) Then&lt;br /&gt;    Call MsgBox("Folder " &amp; strFolder &amp; " exists" _&lt;br /&gt;        &amp; vbCrLf &amp; "and the FileSystemObject works fine")&lt;br /&gt;Else&lt;br /&gt;    Call MsgBox("Folder " &amp; strFolder &amp; " does NOT exists" _&lt;br /&gt;        &amp; vbCrLf &amp; "but the FileSystemObject works fine")&lt;br /&gt;End If&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I ran that script on the affected server and, after clicking OK on the WSH Version dialog, I got this message:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-zzSqlr0AvFM/TlfYy_0lOxI/AAAAAAAAAHc/QMOEZafAIew/s1600/windows-script-error1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 339px; height: 203px;" src="http://2.bp.blogspot.com/-zzSqlr0AvFM/TlfYy_0lOxI/AAAAAAAAAHc/QMOEZafAIew/s400/windows-script-error1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5645219028569242386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I broke out Process Monitor and monitored on the File System.  It sounds like it should be a file system error so we'll scope that out first.  I filtered for everything but wscript.exe (I executed all my command lines as wscript.exe test.vbs) and nothing appeared.  So wscript.exe wasn't even getting to the file system.  So I enabled registry filtering and filtered for wscript.exe:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-yTXdhj7FGkM/TlfZkaED_dI/AAAAAAAAAHk/mA3fptiSqu4/s1600/procfilter.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://2.bp.blogspot.com/-yTXdhj7FGkM/TlfZkaED_dI/AAAAAAAAAHk/mA3fptiSqu4/s400/procfilter.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5645219877427084754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And I reran the script and got this result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-owxfKKFUT4Q/TlfaZEqfcVI/AAAAAAAAAHs/cevVx_rTLkE/s1600/wscript.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 317px;" src="http://1.bp.blogspot.com/-owxfKKFUT4Q/TlfaZEqfcVI/AAAAAAAAAHs/cevVx_rTLkE/s400/wscript.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5645220782215754066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From here I went to another Windows 2008 server and added the missing registry keys (NAME NOT FOUND) and repeated the process again, finding more keys until all were added to the non-functioning server.&lt;br /&gt;&lt;br /&gt;I ended up adding the following registry keys:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Scripting.FileSystemObject]&lt;br /&gt;@="FileSystem Object"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID]&lt;br /&gt;@="{0D43FE01-F093-11CF-8940-00A0C9054228}"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}]&lt;br /&gt;@="FileSystem Object"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}\InprocServer32]&lt;br /&gt;@="C:\\Windows\\SysWOW64\\scrrun.dll"&lt;br /&gt;"ThreadingModel"="Both"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}\ProgID]&lt;br /&gt;@="Scripting.FileSystemObject"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}\TypeLib]&lt;br /&gt;@="{420B2830-E718-11CF-893D-00A0C9054228}"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}\Version]&lt;br /&gt;@="1.0"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}]&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0]&lt;br /&gt;@="Microsoft Scripting Runtime"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0\0]&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0\0\win32]&lt;br /&gt;@="C:\\Windows\\SysWOW64\\scrrun.dll"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0\0\win64]&lt;br /&gt;@="C:\\Windows\\system32\\scrrun.dll"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0\FLAGS]&lt;br /&gt;@="0"&lt;br /&gt;&lt;br /&gt;[HKEY_CLASSES_ROOT\Wow6432Node\TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0\HELPDIR]&lt;br /&gt;@="C:\\Windows\\system32"&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;For some reason, it is launching the Wscript.exe in a 32bit process (as evidenced by WOW6432Node key).  On the working 64bit server I have it is running as a 64bit process.&lt;br /&gt;&lt;br /&gt;After entering those registry keys, here is my new result.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-2R2-1oL77Vo/Tlfb9Ef_BFI/AAAAAAAAAH0/EGofp5dZnEU/s1600/success.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 220px; height: 136px;" src="http://1.bp.blogspot.com/-2R2-1oL77Vo/Tlfb9Ef_BFI/AAAAAAAAAH0/EGofp5dZnEU/s400/success.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5645222500158604370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Success!  Hopefully, if you encounter the same issue, you are not missing any more, or too many more, registry keys.  I wonder why they disappeared, but I don't have a way to trace that unfortunately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1812892440548291830?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1812892440548291830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1812892440548291830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1812892440548291830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1812892440548291830'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/08/issue-with-wsh-scriptingfilesystemobjec.html' title='Issue with WSH (Scripting.FileSystemObject 800A01AD)'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-zzSqlr0AvFM/TlfYy_0lOxI/AAAAAAAAAHc/QMOEZafAIew/s72-c/windows-script-error1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1641951200156612132</id><published>2011-08-24T14:22:00.000-07:00</published><updated>2011-08-24T14:23:20.441-07:00</updated><title type='text'>Awesome AD blog and post</title><content type='html'>I've only viewed a few AD posts on this blog but this is fantastic.&lt;br /&gt;&lt;br /&gt;http://blogs.technet.com/b/lrobins/archive/2011/06/23/quot-admin-free-quot-active-directory-part-2-protected-accounts-and-groups-in-active-directory.aspx&lt;br /&gt;&lt;br /&gt;from Laura Robins that discusses minimizing privledges.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1641951200156612132?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1641951200156612132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1641951200156612132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1641951200156612132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1641951200156612132'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/08/awesome-ad-blog-and-post.html' title='Awesome AD blog and post'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5477404842188178010</id><published>2011-08-23T14:18:00.000-07:00</published><updated>2011-08-23T14:24:28.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fdeploy.log'/><category scheme='http://www.blogger.com/atom/ns#' term='tail'/><category scheme='http://www.blogger.com/atom/ns#' term='folder redirection'/><category scheme='http://www.blogger.com/atom/ns#' term='sed'/><title type='text'>Watch the folder redirect log live</title><content type='html'>If you've enabled the folder redirect log, you can watch it on a remote computer using the tail command and SED.exe.&lt;br /&gt;&lt;br /&gt;Currently, the fdeploy.log (for XP anyways) stores the log as a binary file with a NULL character between each character.  To clean up this output you can pipe tail.exe into sed and tell sed to delete the NULL characters...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-GrSWWOhRrYA/TlQaI4ZvbAI/AAAAAAAAAHM/QqU6KQmEELY/s1600/fdeploy-bad.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-GrSWWOhRrYA/TlQaI4ZvbAI/AAAAAAAAAHM/QqU6KQmEELY/s400/fdeploy-bad.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5644164972883700738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-89Zd35DWn_Y/TlQaPqL23_I/AAAAAAAAAHU/COKmtkFNNMg/s1600/fdeploy-good.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 303px;" src="http://3.bp.blogspot.com/-89Zd35DWn_Y/TlQaPqL23_I/AAAAAAAAAHU/COKmtkFNNMg/s400/fdeploy-good.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5644165089326456818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The command to watch it is now:&lt;br /&gt;tail -f \\gkwngq1\c$\WINDOWS\Debug\UserMode\fdeploy.log | sed "s/\x00//g"&lt;br /&gt;&lt;br /&gt;Cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5477404842188178010?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5477404842188178010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5477404842188178010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5477404842188178010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5477404842188178010'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/08/watch-folder-redirect-log-live.html' title='Watch the folder redirect log live'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-GrSWWOhRrYA/TlQaI4ZvbAI/AAAAAAAAAHM/QqU6KQmEELY/s72-c/fdeploy-bad.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1747858035413338937</id><published>2011-07-28T08:08:00.001-07:00</published><updated>2011-07-28T08:33:53.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='group policy object'/><category scheme='http://www.blogger.com/atom/ns#' term='AD'/><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='OU'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='gpo'/><category scheme='http://www.blogger.com/atom/ns#' term='sed'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='organization unit'/><category scheme='http://www.blogger.com/atom/ns#' term='Active Directory'/><title type='text'>Generate a CSV from your GPO's per OU</title><content type='html'>If you come into an environment like I have, you'll find that some companies prefer to break out their AD structure by location and then generate a OU structure that matches it.  Physically, this is understandable and you can understand what's where.  Logically, this causes issues because AD utilizes an inheritance model and this gets complicated and very messy very quickly if you do not follow a strict model.  This model falls on its face when you have a centralized IT force.  As an example, the company I worked for acquired numerous other companies and a each company/location had it's own IT workforce.  Eventually, the company consolidated all of these external IT departments into one.  The IT staff then standardized each site for GPO's.  Which made having each one redundant.&lt;br /&gt;&lt;br /&gt;This is a mockup of the OU structure:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-W0a4Qbvmb6U/TjF9O3VSvYI/AAAAAAAAAG0/VCT-QRAfjxQ/s1600/OU-Structure.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 259px; height: 400px;" src="http://1.bp.blogspot.com/-W0a4Qbvmb6U/TjF9O3VSvYI/AAAAAAAAAG0/VCT-QRAfjxQ/s400/OU-Structure.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5634422303142100354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the GPO's applied:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-KT8IXaKWGOI/TjF9w5DBi-I/AAAAAAAAAG8/P5fBuRaxSFE/s1600/OU-w-GPO.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 257px; height: 400px;" src="http://4.bp.blogspot.com/-KT8IXaKWGOI/TjF9w5DBi-I/AAAAAAAAAG8/P5fBuRaxSFE/s400/OU-w-GPO.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5634422887717899234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you look closely, you can see that some sites are missing some GPO's, some have an extra GPO, and some have the same.  The goal I was given is that I need to consolidate the OU's with the same GPO's applied and then I can examine the disparate ones individually.  In order to make a nice spreadsheet to do this I created this script (run on Windows, I added awk, sed, and grep to the \windows\system32 folder and installed group policy management).&lt;br /&gt;&lt;br /&gt;Since the structure has a nice, predictable "end" OU (eg, Laptops, Desktops, Users) I could script for that keyword:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;:Lets grab all the OU's&lt;br /&gt;cscript "%programfiles%\gpmc\scripts\dumpsominfo.wsf" "Desktops" /showinheritedlinks &gt; desktop-gpo-links.txt&lt;br /&gt;&lt;br /&gt;:now we're going to parse out all the GPO's&lt;br /&gt;:what this next line does is print the file to stdout, piping stdout to awk&lt;br /&gt;:awk then grabs and prints out the text in the range "OU=Desktop" to "-- Who"&lt;br /&gt;:this stdout is then piped to grep which retrieves the path from that selection of text&lt;br /&gt;:grep then removes all other lines that contain path or two "--".  From here,&lt;br /&gt;:awk then removes the first column and prints out the rest of the GPO's.  The last&lt;br /&gt;:awk command then removes all duplicates.&lt;br /&gt;&lt;br /&gt;type desktop-gpo-links.txt | awk "/OU=Desktop/,/-- Who/" | grep -v -E "Path" | grep -v -E "\-\-" | awk "{ for (i=2; i&lt;=NF; i++) printf \"%%s \", $i; printf \"\n\"; }" | awk "! a[$0]++" | sed.exe "s/ $//g" &gt; GPOs.txt&lt;br /&gt;&lt;br /&gt;::::::::::&lt;br /&gt;:Next we need to pull out all the OU's that this is applying against&lt;br /&gt;type desktop-gpo-links.txt | grep -E "Path" &gt; ou.txt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:now we prepare the header's...&lt;br /&gt;ECHO Site &gt; header.txt&lt;br /&gt;type GPOs.txt | sed ":a;N;$!ba;s/\n/,/g" &gt;&gt; header.txt&lt;br /&gt;sed -i ":a;N;$!ba;s/\n//g" header.txt&lt;br /&gt;type header.txt &gt; desktop-gpos.csv&lt;br /&gt;&lt;br /&gt;:print the ou's into the desktop-gpos.csv&lt;br /&gt;type ou.txt &gt;&gt;  desktop-gpos.csv&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SETLOCAL ENABLEDELAYEDEXPANSION&lt;br /&gt;&lt;br /&gt;for /f "tokens=*" %%A IN ('type "desktop-GPO-links.txt" ^| Grep.exe -E "Path"') DO (&lt;br /&gt;  for /f "tokens=*" %%a in ('type gpos.txt') DO (&lt;br /&gt;    awk "/%%A/,/-- Who/" "desktop-GPO-links.txt" | grep.exe -E "%%a$"&lt;br /&gt;    IF '!ERRORLEVEL!' EQU '0' sed.exe -i "/%%A/s|$|,x|g" desktop-gpos.csv&lt;br /&gt;    IF '!ERRORLEVEL!' EQU '1' sed.exe -i "/%%A/s|$|,|g" desktop-gpos.csv&lt;br /&gt;  )&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:last we know need to exchange the ,OU and ,DC commas to something else because&lt;br /&gt;:excel will automatically change them to new columns.&lt;br /&gt;sed.exe -i "s/,OU/;OU/g" desktop-gpos.csv&lt;br /&gt;sed.exe -i "s/,DC/;OU/g" desktop-gpos.csv&lt;br /&gt;&lt;br /&gt;:and we remove the "Path &lt;tab&gt;" string just for nice-ness:&lt;br /&gt;sed -i -r "s/Path.+Desktops/Desktops/g" desktop-gpos.csv&lt;br /&gt;&lt;br /&gt;del sed* /q&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This generates the following file:&lt;br /&gt;&lt;br /&gt;Site ,Windows Update Policy - Workstations,Fabrikcom Workstation Policy,Local Administrator Account - Workstations,Fabrikcom Workstation Policy V2,Fabrikcom IE 7,Windows - Configure Kerberos to use TCP instead of UDP,Default Domain Policy,DisableAutoArchiveOutlook,Fabrikcom Internal Wireless,General Desktop Policy,[Unknown],PowerSchemeOptions,Fabrikcom IT User Policy,GPO_ORG_Outlook Cache Mode Settings&lt;br /&gt;Desktops;OU=New Town;OU=BigCompanyA;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=SanFrancisco;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyC;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=NewYork;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=GreekTown;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=Houston;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=Alexandria;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=GreekTown;OU=BigCompanyB;OU=fabrikcom;OU=com,x,,x,x,,x,x,x,x,x,x,,,&lt;br /&gt;Desktops;OU=Okotoks;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Victoria;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Winnipeg;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Malahat;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=Toronto;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=Calgary;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=Vancouver;OU=BigCompanyC;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=SanJose;OU=BigCompanyC;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=Houston;OU=BigCompanyC;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=GoMax;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Richmond;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Kelowna;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Edmonton;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=BigCompanyB-Hamilton;OU=BigCompanyB;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;Desktops;OU=ITGroup;OU=fabrikcom;OU=com,x,x,x,x,,x,x,x,x,,x,,,&lt;br /&gt;&lt;br /&gt;Which looks like this when you put it in Excel:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Q9lN76kofAY/TjGAr76bvBI/AAAAAAAAAHE/hRovkGJ-M7U/s1600/finalresult.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 152px;" src="http://2.bp.blogspot.com/-Q9lN76kofAY/TjGAr76bvBI/AAAAAAAAAHE/hRovkGJ-M7U/s400/finalresult.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5634426101122710546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice and pretty and if you add conditional formatting on "x" you can easily identify which OU's are the same and can be consolidated, or just a nice report on which GPO's are affecting which OU's.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1747858035413338937?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1747858035413338937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1747858035413338937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1747858035413338937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1747858035413338937'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/07/generate-csv-from-your-gpos-per-ou.html' title='Generate a CSV from your GPO&apos;s per OU'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-W0a4Qbvmb6U/TjF9O3VSvYI/AAAAAAAAAG0/VCT-QRAfjxQ/s72-c/OU-Structure.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-4084879940438837287</id><published>2011-07-25T08:45:00.000-07:00</published><updated>2011-07-25T11:00:26.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redirector failed to determine the connection type offline files'/><title type='text'>Offline files and the redirector failed</title><content type='html'>I have a client that's getting an error message occasionally that is causing her offline files to not appear on her laptop.  The Event Viewer captures the data of the packet in event ID 3019 and it appears as such (change to WORD):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-vFhgBAxkzbY/Ti2vIPcYCgI/AAAAAAAAAGs/q_vlhQVrsKI/s1600/redirect-fail.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 356px; height: 400px;" src="http://4.bp.blogspot.com/-vFhgBAxkzbY/Ti2vIPcYCgI/AAAAAAAAAGs/q_vlhQVrsKI/s400/redirect-fail.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5633351265029720578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The error recorded in Event Viewer actually corresponds to:&lt;br /&gt;&lt;a href="http://hi.baidu.com/sinovan/blog/item/ccb71f172540e0054b90a776.html"&gt;C000023A STATUS_CONNECTION_INVALID&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm unsure why it's getting a status_connection_invalid error for a few minutes as the laptop is local to the network and there is a DC right there (and the file server is right there too).&lt;br /&gt;&lt;br /&gt;Unfortunately, I have not been able to solve this yet.  More investigation is needed, but it doesn't help that it's intermittent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-4084879940438837287?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/4084879940438837287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=4084879940438837287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4084879940438837287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4084879940438837287'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/07/offline-files-and-redirector-failed.html' title='Offline files and the redirector failed'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-vFhgBAxkzbY/Ti2vIPcYCgI/AAAAAAAAAGs/q_vlhQVrsKI/s72-c/redirect-fail.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-4613930268617426822</id><published>2011-07-13T12:29:00.001-07:00</published><updated>2011-07-13T12:32:05.317-07:00</updated><title type='text'>XP - Slow user login, constant prompts for accessing file shares</title><content type='html'>At work we were having an issue that seemed to happen a lot at remote sites.  Either login times were glacially slow, users could not access file shares without being prompted over and over again for their credentials and numerous logs of:&lt;br /&gt;Event Type: Warning &lt;br /&gt;Event Source: LSASRV &lt;br /&gt;Event Category: SPNEGO (Negotiator) &lt;br /&gt;Event ID: 40960 &lt;br /&gt;Date: date&lt;br /&gt;Time: time&lt;br /&gt;User: N/A &lt;br /&gt;Computer: Computername&lt;br /&gt;Description: The Security System detected an authentication error for the server ldap/dca.acc.local. The failure code from authentication protocol Kerberos was "There are currently no logon servers available to service the logon request. (0xc000005e)". &lt;br /&gt;For more information, see Help and Support Center at http://support.microsoft.com. &lt;br /&gt;Data: 0000: c000005e &lt;br /&gt;&lt;br /&gt;Event Type: Warning &lt;br /&gt;Event Source: LSASRV &lt;br /&gt;Event Category: SPNEGO (Negotiator) &lt;br /&gt;Event ID: 40961 &lt;br /&gt;Date: date&lt;br /&gt;Time: time&lt;br /&gt;User: N/A &lt;br /&gt;Computer: Computername&lt;br /&gt;Description: The Security System could not establish a secured connection with the server ldap/Computername.domain.com. No authentication protocol was available. &lt;br /&gt;For more information, see Help and Support Center at http://support.microsoft.com. &lt;br /&gt;Data: 0000: c0000388 &lt;br /&gt;&lt;br /&gt;The fix to these issues is to switch Kerberos to UDP.  After doing so the warnings disappeared and accessing file shares worked without constant reprompting.  As well, logins for these remote users became much, much faster.&lt;br /&gt;&lt;br /&gt;The change to set Kerberos to UDP is here:&lt;br /&gt;http://support.microsoft.com/kb/244474&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Start Registry Editor.&lt;br /&gt;Locate and then click the following registry subkey:&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\ Kerberos\Parameters&lt;br /&gt;Note If the Parameters key does not exist, create it now.&lt;br /&gt;On the Edit menu, point to New, and then click DWORD Value.&lt;br /&gt;Type MaxPacketSize, and then press ENTER.&lt;br /&gt;Double-click MaxPacketSize, type 1 in the Value data box, click to select the Decimal option, and then click OK.&lt;br /&gt;Quit Registry Editor.&lt;br /&gt;Restart your computer.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-4613930268617426822?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/4613930268617426822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=4613930268617426822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4613930268617426822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4613930268617426822'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/07/xp-slow-user-login-constant-prompts-for.html' title='XP - Slow user login, constant prompts for accessing file shares'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6041090974051227424</id><published>2011-07-11T10:11:00.000-07:00</published><updated>2011-07-11T11:07:23.126-07:00</updated><title type='text'>Find all OU's and what GPO's are linked to them</title><content type='html'>I made a script using SED and ADFIND to find all OU's and what GPO's were linked to them:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;adfind -b DC=ccs,DC=corp -f "(&amp;(objectCategory=organizationalUnit)(gPLink=*))" cn gplink -csv -csvdelim : &gt; gplinks.txt&lt;br /&gt;adfind -b DC=ccs,DC=corp -f "(&amp;(objectCategory=groupPolicyContainer)(cn=*))" cn displayName -nodn -csv &gt; gpnames.txt&lt;br /&gt;sed -i "s/\"//g" gpnames.txt&lt;br /&gt;sed -i "s/\[LDAP:\/\/..=//g" gplinks.txt&lt;br /&gt;sed -r -i "s/..=.olicies,..=.ystem,DC=ccs,DC=corp\\;.\]//g" gplinks.txt&lt;br /&gt;&lt;br /&gt;for /f "tokens=1-2 delims=," %A IN ('type "gpnames.txt"') DO sed -i "s/%A/%B/g" "gplinks.txt"&lt;br /&gt;del sed* /q&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Love it :)&lt;br /&gt;&lt;br /&gt;To expand on the above, here is a batch file that will find all empty OU's and what GPO's are linked to them:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;:This script requires SED.txt and ADFIND.exe&lt;br /&gt;&lt;br /&gt;:Goes through every OU and finds every GPO linked to it&lt;br /&gt;adfind -b DC=ccs,DC=corp -f "(&amp;(objectCategory=organizationalUnit)(gPLink=*))" cn gplink -csv -csvdelim : &gt; gplinks.txt&lt;br /&gt;:Goes through every GPO and finds it's common name&lt;br /&gt;adfind -b DC=ccs,DC=corp -f "(&amp;(objectCategory=groupPolicyContainer)(cn=*))" cn displayName -nodn -csv &gt; gpnames.txt&lt;br /&gt;&lt;br /&gt;:run some text clean up commands.  Deletes double-quotes&lt;br /&gt;sed -i "s/\"//g" gpnames.txt&lt;br /&gt;:run some text clean up commands.  Deletes [LDAP://&lt;br /&gt;sed -i "s/\[LDAP:\/\/..=//g" gplinks.txt&lt;br /&gt;:run some text clean up commands.&lt;br /&gt;sed -r -i "s/..=.olicies,..=.ystem,DC=ccs,DC=corp\\;.\]//g" gplinks.txt&lt;br /&gt;pause&lt;br /&gt;:repalces the LDAP GUID name in gplinks.txt with the actual name&lt;br /&gt;for /f "tokens=1-2 delims=," %%A IN ('type "gpnames.txt"') DO sed -i "s/%%A/%%B/g" "gplinks.txt"&lt;br /&gt;sed -i "s/\"//g" gplinks.txt&lt;br /&gt;&lt;br /&gt;:Finds all empty OU's&lt;br /&gt;@Echo Off&lt;br /&gt;SETLOCAL EnableDelayedExpansion&lt;br /&gt;&lt;br /&gt;IF EXIST EmptyOUs.txt DEL /F /Q EmptyOUs.txt&lt;br /&gt;SET OUQry=DSQuery OU -Name * -Limit 0&lt;br /&gt;FOR /F "delims=#" %%o IN ('%OUQry%') Do (&lt;br /&gt;      Echo Processing: %%o&lt;br /&gt;      DSQuery * %%o -Limit 0 | Find "CN=" &gt;NUL&lt;br /&gt;      IF ERRORLEVEL 1 Echo %%o&gt;&gt;EmptyOUs.txt&lt;br /&gt;)&lt;br /&gt;Echo.&lt;br /&gt;Echo Search Complete! Check 'EmptyOUs.txt' file.&lt;br /&gt;Echo.&lt;br /&gt;ENDLOCAL&lt;br /&gt;sed -i "s/\"//g" EmptyOUs.txt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:if gplinks OU is equal to an OU in EmptyOU then replace the OU with EMPTY:OU&lt;br /&gt;for /f "tokens=1-10 delims=:" %%A IN ('type gplinks.txt') DO (&lt;br /&gt;  for /f "tokens=*" %%a IN ('type EmptyOUs.txt') DO (&lt;br /&gt;    if /I %%A equ %%a sed -i "s/%%A/EMPTY:%%A/g" gplinks.txt&lt;br /&gt;  )&lt;br /&gt;)&lt;br /&gt;del sed* /q&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6041090974051227424?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6041090974051227424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6041090974051227424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6041090974051227424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6041090974051227424'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/07/find-all-ous-and-what-gpos-are-linked.html' title='Find all OU&apos;s and what GPO&apos;s are linked to them'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6657458376771427764</id><published>2011-07-08T08:52:00.000-07:00</published><updated>2011-07-08T08:53:28.939-07:00</updated><title type='text'>ADFind one-liner -&gt; Find operating system of computer in AD</title><content type='html'>Nice :)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;adfind -b "OU=Domain Controllers,DC=lab,DC=com" -f "&amp;(objectcategory=computer)" operatingSystem -csv&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6657458376771427764?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6657458376771427764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6657458376771427764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6657458376771427764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6657458376771427764'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/07/adfind-one-liner-find-operating-system.html' title='ADFind one-liner -&gt; Find operating system of computer in AD'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-7130478756841842650</id><published>2011-07-06T10:40:00.001-07:00</published><updated>2011-07-06T10:43:55.647-07:00</updated><title type='text'>Set home directories even if it's a hidden share</title><content type='html'>There exists an issue with DSMOD that prevents you from modifying the -hmdir with a share that has a dollar sign in it.  According to the dsmod.exe example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The special token $username$ (case insensitive) may be used to place the&lt;br /&gt;SAM account name in the value of -webpg, -profile, -hmdir, and&lt;br /&gt;-email parameter.&lt;br /&gt;For example, if the target user DN is&lt;br /&gt;CN=Jane Doe,CN=users,CN=microsoft,CN=com and the SAM account name&lt;br /&gt;attribute is "janed," the -hmdir parameter can have the following&lt;br /&gt;substitution:&lt;br /&gt;&lt;br /&gt;-hmdir \users\$username$\home&lt;br /&gt;&lt;br /&gt;The value of the -hmdir parameter is modified to the following value:&lt;br /&gt;&lt;br /&gt;- hmdir \users\janed\home&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This does not work if your home directory is structured like so:&lt;br /&gt;&lt;br /&gt;-hmdir \users$\$username$\home&lt;br /&gt;&lt;br /&gt;The value returned by DSMOD is actually:&lt;br /&gt;&lt;br /&gt;- hmdir \users$\$username$\home as opposed to the proper&lt;br /&gt;\users$\janed\home&lt;br /&gt;&lt;br /&gt;To fix this you can use the awesome ADFIND and ADMOD from Joeware.&lt;br /&gt;&lt;br /&gt;The command to fix set it correctly would be:&lt;br /&gt;&lt;blockquote&gt;adfind -b "OU=TEST - Trentent,DC=lab,DC=com" -adcsv -f "(&amp;objectClass=user)" samAccountName | admod homeDirectory::\\test\test$\{{samAccountName}} homeDrive::Z:&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Go Joe!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-7130478756841842650?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/7130478756841842650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=7130478756841842650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7130478756841842650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7130478756841842650'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/07/set-home-directories-even-if-its-hidden.html' title='Set home directories even if it&apos;s a hidden share'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-4947023596826803012</id><published>2011-06-28T14:54:00.000-07:00</published><updated>2011-06-28T14:57:25.250-07:00</updated><title type='text'>AD Script to Link GPO's via the command line</title><content type='html'>I've modified a script I found online to allow standard batch file passthrough for linking a GPO to a OU.&lt;br /&gt;&lt;br /&gt;Usage: cscript.exe linkGPO.vbs "Test GPO" "lab.com" "OU=AD Project,DC=lab,DC=com"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt; If WScript.Arguments.Count = 3 Then&lt;br /&gt;  strGPO = WScript.Arguments.Item(0)&lt;br /&gt;  strDomain = WScript.Arguments.Item(1)&lt;br /&gt;  strOU = WScript.Arguments.Item(2)&lt;br /&gt; Else&lt;br /&gt;  Wscript.Echo "Usage: linkGPO.vbs ""GPO Name"" ""Domain name"" OUs"&lt;br /&gt;  Wscript.Echo "Usage: linkGPO.vbs ""Test GPO"" ""lab.com"" ""OU=AD Project,DC=lab,DC=com"""&lt;br /&gt;  Wscript.Quit&lt;br /&gt; End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; ' This code links a GPO to an OU&lt;br /&gt; ' ------ SCRIPT CONFIGURATION ------&lt;br /&gt; 'strGPO     = "zCCS IE 7"           ' e.g. "Sales GPO"&lt;br /&gt; 'strDomain  = "lab.com"     ' e.g. "rallencorp.com"&lt;br /&gt; 'strOU      = "OU=Offices,OU=AD Project,DC=lab,DC=com"         ' e.g. "ou=Sales,dc=rallencorp,dc=com"&lt;br /&gt; intLinkPos = -1 ' set this to the position the GPO evaluated at&lt;br /&gt;                 ' a value of -1 signifies appending it to the end of the list&lt;br /&gt; ' ------ END CONFIGURATION ---------&lt;br /&gt;&lt;br /&gt; set objGPM = CreateObject("GPMgmt.GPM")&lt;br /&gt; set objGPMConstants = objGPM.GetConstants( )&lt;br /&gt;&lt;br /&gt; ' Initialize the Domain object&lt;br /&gt; set objGPMDomain = objGPM.GetDomain(strDomain, "", objGPMConstants.UseAnyDC)&lt;br /&gt;&lt;br /&gt; ' Find the specified GPO&lt;br /&gt; set objGPMSearchCriteria = objGPM.CreateSearchCriteria&lt;br /&gt; objGPMSearchCriteria.Add objGPMConstants.SearchPropertyGPODisplayName, _&lt;br /&gt; objGPMConstants.SearchOpEquals, cstr(strGPO)&lt;br /&gt; set objGPOList = objGPMDomain.SearchGPOs(objGPMSearchCriteria)&lt;br /&gt; if objGPOList.Count = 0 then&lt;br /&gt;    WScript.Echo "Did not find GPO: " &amp; strGPO&lt;br /&gt;    WScript.Echo "Exiting."&lt;br /&gt;    WScript.Quit&lt;br /&gt; elseif objGPOList.Count &gt; 1 then&lt;br /&gt;    WScript.Echo "Found more than one matching GPO. Count: " &amp; _&lt;br /&gt;                 objGPOList.Count&lt;br /&gt;    WScript.Echo "Exiting."&lt;br /&gt;    WScript.Quit&lt;br /&gt; else&lt;br /&gt;    WScript.Echo "Found GPO: " &amp; objGPOList.Item(1).DisplayName&lt;br /&gt; end if&lt;br /&gt;&lt;br /&gt; ' Find the specified OU&lt;br /&gt; set objSOM = objGPMDomain.GetSOM(strOU)&lt;br /&gt; if IsNull(objSOM) then&lt;br /&gt;    WScript.Echo "Did not find OU: " &amp; strOU&lt;br /&gt;    WScript.Echo "Exiting."&lt;br /&gt;    WScript.Quit&lt;br /&gt; else&lt;br /&gt;    WScript.Echo "Found OU: " &amp; objSOM.Name&lt;br /&gt; end if&lt;br /&gt;&lt;br /&gt; on error resume next&lt;br /&gt;&lt;br /&gt; set objGPMLink = objSOM.CreateGPOLink( intLinkPos, objGPOList.Item(1) )&lt;br /&gt;&lt;br /&gt; if Err.Number &lt;&gt; 0 then&lt;br /&gt;    WScript.Echo "There was an error creating the GPO link."&lt;br /&gt;    WScript.Echo "Error: " &amp; Err.Description&lt;br /&gt; else&lt;br /&gt;    WScript.Echo "Sucessfully linked GPO to OU"&lt;br /&gt; end if&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-4947023596826803012?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/4947023596826803012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=4947023596826803012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4947023596826803012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4947023596826803012'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/06/ad-script-to-link-gpos-via-command-line.html' title='AD Script to Link GPO&apos;s via the command line'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1545008211458459058</id><published>2011-06-28T08:25:00.000-07:00</published><updated>2011-06-28T08:27:31.161-07:00</updated><title type='text'>Excel Find Text Formula</title><content type='html'>=IF(ISNUMBER(FIND("My Documents Folder Redirect",A1)),"Yes","No")&lt;br /&gt;&lt;br /&gt;This excel formula searches that the formula (A1) "contains" the text "My Documents Folder Redirect". If it does, it puts Yes in the field it's run in. If not, No.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1545008211458459058?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1545008211458459058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1545008211458459058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1545008211458459058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1545008211458459058'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/06/excel-find-text-formula.html' title='Excel Find Text Formula'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-8088902658071098873</id><published>2011-06-23T11:02:00.001-07:00</published><updated>2011-06-23T11:02:43.181-07:00</updated><title type='text'>Cool AD Tools and one liners</title><content type='html'>&lt;p&gt;Cool tools:&lt;br /&gt;&lt;a href="http://www.joeware.net/freetools/"&gt;http://www.joeware.net/freetools/&lt;/a&gt;&lt;/p&gt;One Liners:&lt;br /&gt;&lt;a href="http://www.pcman.net/active-directory-command-line-one-liners"&gt;http://www.pcman.net/active-directory-command-line-one-liners&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-8088902658071098873?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/8088902658071098873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=8088902658071098873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/8088902658071098873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/8088902658071098873'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/06/cool-ad-tools-and-one-liners.html' title='Cool AD Tools and one liners'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1730417403915859941</id><published>2011-05-03T08:42:00.000-07:00</published><updated>2011-05-03T08:55:57.452-07:00</updated><title type='text'>invalid pxe server list format - Altiris</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-bEZSmTuh4aE/TcAlK_PahnI/AAAAAAAAAGI/Dy3oG7fbIDE/s1600/Screen%2Bshot%2B2011-05-03%2Bat%2B9.53.47%2BAM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;I restarted our Altiris server and our PXE services wouldn't come up.  Trying to start them resulted in:&lt;div&gt;File not found&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then checked the path listed in the service and found that, indeed, our PXE files where not in the location that the service was trying to start them in:&lt;/div&gt;&lt;div&gt;F:\Program Files\Altiris\eXpress\Deployment Server\PXE&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The missing files were:&lt;/div&gt;&lt;div&gt;PXEService.exe&lt;/div&gt;&lt;div&gt;PXEmtftp.exe&lt;/div&gt;&lt;div&gt;PXEMgr.exe&lt;/div&gt;&lt;div&gt;PXECfgService.exe&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They were located here:&lt;/div&gt;&lt;div&gt;F:\Program Files\Altiris\eXpress\Deployment Server\PXE\MasterImages\UpSrv\51&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I don't know why it wasn't looking for them in the longer path, but I copied those files to the directory it wanted (\PXE)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then attempted to start the services and they all started correctly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I attempted to PXE boot one of my VM's.  This failed with an error stating:&lt;/div&gt;&lt;div&gt;"invalid pxe server list format"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Attempting to troubleshoot this, I used procmon and saw that it was downloading bstrap.0 successfully then generating the error.  I enabled logging for the PXE Server in Altiris and set the logging level for "Errors".  I then restarted all the Altiris services.  When I restarted the PXE Server service, I got this error message:&lt;/div&gt;&lt;div&gt;&lt;div&gt;E [11:32:26 05/03] (3480): Enter: SetupDHCP(...)&lt;/div&gt;&lt;div&gt;E [11:32:26 05/03] (3480): SetupDHCP: Auto Detect, configure option 60.&lt;/div&gt;&lt;div&gt;(3480)Failed to load Dll Library.&lt;/div&gt;&lt;div&gt;(3480)Failed to load Dll Library.&lt;/div&gt;&lt;div&gt;(3480)Failed to load Dll Library.&lt;/div&gt;&lt;div&gt;(3480)Failed to load Dll Library.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then fired up Process Monitor and did a file trace while restarting PXE Server.  It informed me it could not find the following files:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/-bEZSmTuh4aE/TcAlK_PahnI/AAAAAAAAAGI/Dy3oG7fbIDE/s400/Screen%2Bshot%2B2011-05-03%2Bat%2B9.53.47%2BAM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5602518807153903218" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 47px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;I then copied those missing DLL's from the &lt;/span&gt;&lt;/span&gt;F:\Program Files\Altiris\eXpress\Deployment Server\PXE\MasterImages\UpSrv\51 directory to the F:\Program Files\Altiris\eXpress\Deployment Server\PXE directory and restarted the PXE Server Service.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then attempted to PXE boot my VM and lo and behold, it worked again.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1730417403915859941?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1730417403915859941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1730417403915859941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1730417403915859941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1730417403915859941'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/05/invalid-pxe-server-list-format-altiris.html' title='invalid pxe server list format - Altiris'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-bEZSmTuh4aE/TcAlK_PahnI/AAAAAAAAAGI/Dy3oG7fbIDE/s72-c/Screen%2Bshot%2B2011-05-03%2Bat%2B9.53.47%2BAM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-29541153333570986</id><published>2011-04-29T08:19:00.000-07:00</published><updated>2011-04-29T08:21:12.320-07:00</updated><title type='text'>Configure Local Group Policy via the command line</title><content type='html'>Apply a security policy using an .inf file&lt;br /&gt;&lt;br /&gt;[Unicode]Unicode=yes&lt;br /&gt;[Version]signature="$CHICAGO$"&lt;br /&gt;Revision=1&lt;br /&gt;[Profile Description]&lt;br /&gt;Description=profile description&lt;br /&gt;[System Access]&lt;br /&gt;MinimumPasswordAge = 10&lt;br /&gt;MaximumPasswordAge = 30&lt;br /&gt;MinimumPasswordLength = 6&lt;br /&gt;RequireLogonToChangePassword = 0&lt;br /&gt;NewAdministratorName = "NewAdminAccountName"&lt;br /&gt;NewGuestName = "NewGuestAccountName"&lt;br /&gt;&lt;br /&gt;Simple to apply from a cmd line&lt;br /&gt;&lt;br /&gt;secedit /configure /db %windir%\security\database\localdb.sdb /cfg %systemdrive%\install\local\policy\policyname.inf /verbose&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-29541153333570986?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/29541153333570986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=29541153333570986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/29541153333570986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/29541153333570986'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/04/configure-local-group-policy-via.html' title='Configure Local Group Policy via the command line'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-3319018093427972581</id><published>2011-04-19T08:36:00.000-07:00</published><updated>2011-04-19T08:41:40.082-07:00</updated><title type='text'>Maya and rendering priorities</title><content type='html'>I have a small farm of computers at home that I want to use as a render farm.  Some of them are used by my family though and starting Maya renderings on them greatly diminishes their usability during that time.  What needs to be done is force the priority lower on the rendering app (mayabatch.exe).  3D Studio Max has a script called "serverpriority.ms" that does this and it's essentially one line that, upon startup, sets the priority to low.  I've been unable to find one like that for Maya but have found an acceptable workaround.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you start the Backburner server.exe app as low priority all threads that the apps server.exe starts (like cmdjob and mayabatch.exe) will start in the same priority.  Start the server.exe as low and your rendering threads will be low.  To start server.exe in a low priority mode via command-line it looks like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;START "" /LOW "\path\to\server.exe"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Done!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-3319018093427972581?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/3319018093427972581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=3319018093427972581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/3319018093427972581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/3319018093427972581'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2011/04/maya-and-rendering-priorities.html' title='Maya and rendering priorities'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5527825523689104091</id><published>2010-12-12T13:13:00.001-08:00</published><updated>2010-12-12T13:27:47.459-08:00</updated><title type='text'>Windows Backup Error 0x81000019</title><content type='html'>Recently, I've been getting an error from Windows Backup:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Error Code: 0x81000019&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Event Viewer lists the following additional information:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Shadow copy creation failed because of error reported by ASR Writer.  More info: The requested system device cannot be found. (0x80073BC3).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Volume Shadow Copy Service warning: ASR writer Error 0x80073bc3.  hr = 0x00000000, The operation completed successfully.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Operation:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   PrepareForBackup event&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Context:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Execution Context: ASR Writer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Execution Context: Writer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Writer Class Id: {be000cbe-11fe-4426-9c58-531aa6355fc4}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Writer Name: ASR Writer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Writer Instance ID: {5c8b67a8-a665-45e5-9f5c-45382f136693}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Error-specific details:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   ASR Writer: The requested system device cannot be found. (0x80073BC3)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Volume Shadow Copy Service error: Unexpected error calling routine Check OnIdentifyError.  hr = 0x80073bc3, The requested system device cannot be found.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Operation:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   PrepareForBackup event&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Context:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Execution Context: ASR Writer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Execution Context: Writer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Writer Class Id: {be000cbe-11fe-4426-9c58-531aa6355fc4}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Writer Name: ASR Writer&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   Writer Instance ID: {5c8b67a8-a665-45e5-9f5c-45382f136693}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Error-specific details:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;   ASR Writer: The requested system device cannot be found. (0x80073BC3)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Fault bucket 668258104, type 5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Event Name: WindowsBackupFailure&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Response: Not available&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Cab Id: 0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Problem signature:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P1: Backup&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P2: 6.1.7600&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P3: 0x81000019&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P4: 7&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P5: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P6: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P7: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P8: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P9: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;P10: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Attached files:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;C:\Windows\Logs\WindowsBackup\WindowsBackup.1.etl&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;These files may be available here:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;C:\ProgramData\Microsoft\Windows\WER\ReportArchive\NonCritical_Backup_7a9178ddfcd376c581a8653b09ae5e2464735bf_100ef6dc&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Analysis symbol: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Rechecking for solution: 0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Report Id: 8b57e781-0633-11e0-a042-90e6ba2d22c8&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Report Status: 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;Backup did not complete successfully because a shadow copy could not be created. Free up disk space on the drive that you are backing up by deleting unnecessary files and then try again.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And what does it all mean?  Well, I just recently installed a new hard disk and installed an alternative OS onto it.  This new hard disk is appearing as "Disk 0" in Disk Management and it *is* the boot device.  When I boot off it and then select my Windows partition I get these error messages.  It appears VSS attempts to access/lock the drive that booted the OS and it fails.  If I attempt to take "Disk 0" offline, I get the following error message:&lt;/div&gt;&lt;div&gt;&lt;div&gt;---------------------------&lt;/div&gt;&lt;div&gt;Virtual Disk Manager&lt;/div&gt;&lt;div&gt;---------------------------&lt;/div&gt;&lt;div&gt;Disk attributes may not be changed on the current system disk or BIOS disk 0. &lt;/div&gt;&lt;div&gt;---------------------------&lt;/div&gt;&lt;div&gt;OK   &lt;/div&gt;&lt;div&gt;---------------------------&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using Procmon I can see that VSSVC.exe attempts to access a filesystem that it cannot... Well, the only disk that it can't access is the lone "Alternative OS" disk.  I suspect removing that disk or forcing my BIOS to boot directly to the Windows partition will resolve my issues.  If you're in a similar situation as me, I would suggest checking your boot order, removing any extraneous disks or ensuring your boot drive is appearing as "Disk 0"  in disk management.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've just tested and confirmed that forcing my BIOS to boot directly to my OS drive without going through an alternative drive has enabled the backup program to operate without any errors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This blogpost is for anyone else that my experience a similar issue.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5527825523689104091?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5527825523689104091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5527825523689104091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5527825523689104091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5527825523689104091'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/12/windows-backup-error-0x81000019.html' title='Windows Backup Error 0x81000019'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-719733872116930093</id><published>2010-12-02T00:02:00.000-08:00</published><updated>2010-12-12T13:46:13.020-08:00</updated><title type='text'>DataRAM RAM Disk Review (part 2)</title><content type='html'>I've purchased some RAM to replace my 1GB sticks.  This new RAM allows my system to operate at 1333MHz DRAM speed without issues.  So, I've set my RAM to this new bandwidth speed and my memory went to:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;14099MB/s Read, 12034MB/s Write, 16901MB/s Copy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This represents an improvement of:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;23% Read, 0% Write, 10% Copy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With a 23% Read performance improvement will DataRAM's RAMDrive solution improve?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It does not.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It appears something else is holding the performance of the RAMDrive software down.  IOMeter *did* see some improvement (from 5000Mb/s to 5094MB/s...  a 1.9% improvement) but pretty insignificant from what it *should* be, if it was hardware being the hold up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The "bandwidth" of the RAMDrive is 40Gbps, a pretty large leap from the maximum you could get from SATA at it's best (6Gbps), but I hope DataRAM investigates what the performance ceiling is of their software and can explain or correct what's causing it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall though, I'm still happy with the software and for a free 4GB RAM disk or $10 for a maximum of ~64GB, I think it's a great value.  I have 18GB of RAM in my system and utilize this software for programs like StarCraft or VMWare machines and the loading speeds are great.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-719733872116930093?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/719733872116930093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=719733872116930093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/719733872116930093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/719733872116930093'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/12/dataram-ram-disk-review-part-2.html' title='DataRAM RAM Disk Review (part 2)'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5002701594216695672</id><published>2010-12-01T21:43:00.001-08:00</published><updated>2010-12-01T23:47:16.410-08:00</updated><title type='text'>Dataram RAMDisk Review</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;I've purchased a product called Dataram RAMDISK and am going to do a quick review on it.  It's free for RAM Disk's up to 4GB in size.  Beyond that size and you need to pay $9.99 for a license file that allows you to increase it to whatever amount of free RAM you have in your system up to a maximum of 64GB.   My system is a P6T SE with 6 RAM slots, 3x2GB RAM and 3x1GB RAM sticks are installed, giving me 9GB in total.  This configuration activates triple-channel mode, so I'm getting the full 192bit of available bandwidth from my memory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All of my RAM is DDR3 @ 1333MHz (PC3-10600), but Everest is reporting a speed of 800MHz.  My theoretical MB/s speed should max out at 32000MB/s, but if Everest is only operating at 800MHz that means my theoretical maximum speed is 19200MB/s.  I think the reason I did this is because my triple channel puked at the unmatched channels causing BSOD's and non-boots, but I'll investigate later as it's a huge performance penalty.  Everest confirms this is the measured speed I'm running at 19200MB/s&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_E0GX9VvxUBU/TPc5IZwwgNI/AAAAAAAAAFg/Bmby28E2hZo/s1600/Everest-PC8500.png"&gt;&lt;img src="http://3.bp.blogspot.com/_E0GX9VvxUBU/TPc5IZwwgNI/AAAAAAAAAFg/Bmby28E2hZo/s400/Everest-PC8500.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5545964282647183570" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 321px; height: 145px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(Everest measures 19198MB/s)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPc566dNrDI/AAAAAAAAAFo/7-9Jlh_FH_s/s1600/RAM-Types.png"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPc566dNrDI/AAAAAAAAAFo/7-9Jlh_FH_s/s400/RAM-Types.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5545965150417038386" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 300px; height: 122px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(My unmatched odd sets of RAM pairs.  Note, 1333MHz is the lowest my RAM goes, to 1800MHz for the fastest).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With that said, my current theoretical maximum speed my RAM should be able to operate at is 19200MB/s.  I'm going to test my RAM first to gauge it's maximum speed, then test the RAM Disk to see if it matches up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPc-ZuaufCI/AAAAAAAAAFw/zxBUkg3irEY/s1600/Memory-Benchmark.png"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); -webkit-text-decorations-in-effect: none; "&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPc-ZuaufCI/AAAAAAAAAFw/zxBUkg3irEY/s1600/Memory-Benchmark.png"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPc-ZuaufCI/AAAAAAAAAFw/zxBUkg3irEY/s400/Memory-Benchmark.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5545970077807836194" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 352px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Everest reports that my actual performance is 11446MB/s Read, 11978MB/s Write and 15376MB/s Copy.  The Memory Read benchmark reads a 16 MB sized, 1 MB aligned data buffer from system memory into the CPU.  Memory is read in forward direction, continuously without breaks.  The Memory Write benchmark writes a 16 MB sized, 1 MB aligned data buffer from the CPU into the system  memory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will attempt to duplicate these with IO Meter to see how close the RAMDisk can get to the theoretical benchmark.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Before that, he's Everest Disk Benchmark result (everything is automatic - Linear Read):&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPc-ZuaufCI/AAAAAAAAAFw/zxBUkg3irEY/s1600/Memory-Benchmark.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPdBi6dBvSI/AAAAAAAAAF4/XS2wMhLePAQ/s1600/linear-read.png"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/TPdBi6dBvSI/AAAAAAAAAF4/XS2wMhLePAQ/s400/linear-read.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5545973534192418082" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 128px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With IOMeter I have the following configuration:&lt;/div&gt;&lt;div&gt;Size 1MB&lt;/div&gt;&lt;div&gt;Access 100%&lt;/div&gt;&lt;div&gt;Read 100%&lt;/div&gt;&lt;div&gt;Burst 1&lt;/div&gt;&lt;div&gt;Alignment 1MB&lt;/div&gt;&lt;div&gt;100% Sequential &lt;/div&gt;&lt;div&gt;Align I/O's 1MB&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The results I get are:&lt;/div&gt;&lt;div&gt;5000 I/O per second&lt;/div&gt;&lt;div&gt;5000 MB/s&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Swapping Read 100% to 0% (making it 100% Write) I get:&lt;/div&gt;&lt;div&gt;4930 I/O and MB/s&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So writes are more intensive then reads, as they usually are, but I cannot get anywhere close to the speed of reading a 16MB sized file in 1MB chunks to the maximum theoretical speed of the RAM.  I'm unsure as to why that may be, but I suspect it's the path the file takes from the RAMDisk -&gt; Driver -&gt; Bus -&gt; CPU...?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To try and maximize the speed of the drive and match up to Everest Linear read to gauge the maximum speed of the disk, I'll setup IO Meter to match Everest's description of the Linear Read test:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;This test is designed to measure the sustained linear (sequential) reading performance of the storage device by reading all data from the surface of the device.&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IOMeter does this easily enough.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using Procmon, I was able to verify that Linear Read uses a 64KB block size and reads the entire disk.  Doing this with IO Meter I achieved the same results as above in the MB/s, but much higher IO/s.  I'm unsure why IOMeter is unable to match Everest's results.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HD Tach was not useful as it would operate at 3000MB/s for various lengths of time each time I reran the test.  Sometimes it would operate at 3000MB/s up to 0.5GB then 700MB/s for the rest of the drive, or 3000MB/s up to 2.4GB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Too inconsistent to make an observation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To compare this RAMDisk to other HDD's I turned to Anandtech and used his settings to compare some SSD drives.  &lt;a href="http://www.anandtech.com/show/2614/8"&gt;His results are here.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The results I achieved are:&lt;/div&gt;&lt;div&gt;133362 IOs per second&lt;/div&gt;&lt;div&gt;522 MB/s&lt;/div&gt;&lt;div&gt;Average Write Latency 0.0073&lt;/div&gt;&lt;div&gt;Max Write Latency 0.5526&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Compared to the first gen Intel SSD's the RAM Disk is:&lt;/div&gt;&lt;div&gt;&lt;div&gt;12x faster in IOs per second&lt;/div&gt;&lt;div&gt;12x faster in MB/s&lt;/div&gt;&lt;div&gt;12x faster in Average Write Latency 0.0073&lt;/div&gt;&lt;div&gt;170x faster in Max Write Latency 0.5526&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pretty much an order of magnitude faster as should be expected for a RAM Disk vs. a top of the line SSD.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end, I'm unsure if I've hit a wall with my numbers, but it feels artificial.  Everest does come within 70% of the numbers it achieved in a pure memory test, but even the Everest test tops out at exactly 8192MB/s.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll try changing my memory speeds to something faster and see if this limit is artificial or a limit of my system.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5002701594216695672?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5002701594216695672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5002701594216695672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5002701594216695672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5002701594216695672'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/12/dataram-ramdisk-review.html' title='Dataram RAMDisk Review'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_E0GX9VvxUBU/TPc5IZwwgNI/AAAAAAAAAFg/Bmby28E2hZo/s72-c/Everest-PC8500.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6346923816296746739</id><published>2010-10-14T00:07:00.000-07:00</published><updated>2010-10-14T00:23:25.907-07:00</updated><title type='text'>Getting NTBackup working in WinPE 3.0</title><content type='html'>This is pretty simple.  Install the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a71845fd-4496-439c-ab31-be73498ad3fe&amp;amp;displaylang=en"&gt;NTBackup for Windows 7&lt;/a&gt; on to a Windows 7 computer.  Then copy the appropriate file to their respective places on your WinPE image.  The files:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;X:\Windows\System32\explorer.exe&lt;/div&gt;&lt;div&gt;X:\Windows\System32\NTBackupRestoreUtility.exe&lt;/div&gt;&lt;div&gt;X:\Windows\System32\Query.dll&lt;/div&gt;&lt;div&gt;X:\Windows\System32\en-US\NTBackupRestoreUtility.exe.mui&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it!  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6346923816296746739?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6346923816296746739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6346923816296746739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6346923816296746739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6346923816296746739'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/10/getting-ntbackup-working-in-winpe-30.html' title='Getting NTBackup working in WinPE 3.0'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6227876442161744357</id><published>2010-09-14T23:17:00.000-07:00</published><updated>2010-09-14T23:30:49.548-07:00</updated><title type='text'>Remotely wake computers when the network doesn't pass Magic Packets</title><content type='html'>I'm in a situation where the network we have doesn't pass the UDP 9 magic packet to WoL (wake-on-LAN) remote computers.  I'm not sure why this is, but I've developed a solution around it.  It requires you to be a domain administrator (or local admin) because it uses PSEXEC and you need to copy a small command-line program to the local machine to execute.  To do this in such a way that you can do multiple computers in one pass, you need to create a text file in the same folder as the batch file (upcoming).  The text file has the following format:&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;"COMPUTER-NAME-OF-SYSTEM-ON-SAME-LAN MAC-ADDRESS"&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Note the space between the two.  An example:&lt;/div&gt;&lt;div&gt;CAC00700ZZ is off, but it has a MAC address of 00:12:34:56:78&lt;/div&gt;&lt;div&gt;CAC00855FT is on and on the same LAN as CAC00700ZZ.  I'm on computer SERVER1 and the link between SERVER1 and CAC00700ZZ doesn't allow the magic packet to traverse.  To wake up CAC00700ZZ, I need to send a WoL packet from CAC00855FT.  To do this I create a text file called "computer-list.txt" and put in:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;blockquote&gt;CAC00855FT 00:12:34:56:78&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next I need to create a WAKEUP.CMD file and put in the following:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;:This script wakes up computers using a tertiary computer on the same LAN.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;for /F "tokens=1-2 delims= " %%A IN ('type computer-list.txt') do psexec \\%%A -i -c mc-wol.exe %%B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;pause&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lastly, I need to ensure PSEXEC.EXE, MC-WOL.EXE, computer-list.txt and WAKEUP.CMD are in the same folder.  &lt;a href="http://www.matcode.com/wol.htm"&gt;MC-WOL.EXE can be downloaded from here&lt;/a&gt;.  PSEXEC.exe can be downloaded from Microsoft.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you needed to wake up multiple computers, your computer-list.txt file would look like this:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CAC00700JQ 18A9051BFE68&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CAC00700HT 18A9051E2894&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CAC00700HQ 18A9051E2B90&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6227876442161744357?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6227876442161744357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6227876442161744357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6227876442161744357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6227876442161744357'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/09/remotely-wake-computers-when-network.html' title='Remotely wake computers when the network doesn&apos;t pass Magic Packets'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-4489632001526514139</id><published>2010-09-08T13:18:00.000-07:00</published><updated>2010-09-08T13:23:01.456-07:00</updated><title type='text'>Querying HKEY_CURRENT_USER remotely</title><content type='html'>I'm not sure why MS doesn't allow this to work with their reg.exe program.  On most workstations only a single user is logged in anyways...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;for /f %%A IN ('type domain-list.txt') DO (&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  ECHO %%A &gt;&gt; list1.txt&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  reg query "\\%%A\HKU" &gt; ".\temp.txt"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  findstr /R /C:"HKEY_USERS\\S-1-5-21.*[0-9]$" ".\temp.txt" &gt; ".\temp2.txt"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;  FOR /F %%Z IN ('TYPE .\temp2.txt') DO reg query "\\%%A\%%Z\Software\Unicus Medical Systems" /s /v ReportPrinterName | findstr /R /C:"ReportPrinterName" &gt;&gt; list1.txt&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; )&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above may have truncated (FYI).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok, what this does...&lt;/div&gt;&lt;div&gt;1) Sequentially pull computer names from a file (domain-list.txt)&lt;/div&gt;&lt;div&gt;2) Echo that computer name into our master "list" text file&lt;/div&gt;&lt;div&gt;3) Query the HKEY_USERS via the computer name pulled from step 1 and save to a temporary file&lt;/div&gt;&lt;div&gt;4) Execute a findstr that will only search for user accounts (and not CLASS keys) and save to "temp2.txt".&lt;/div&gt;&lt;div&gt;5) In Temp2.txt, parse and save as variable "%%Z" and execute our reg query and save to our list1.txt file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can replace anything with step 5 to do whatever you need (Reg Add/Delete/Query/etc.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-4489632001526514139?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/4489632001526514139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=4489632001526514139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4489632001526514139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4489632001526514139'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/09/querying-hkeycurrentuser-remotely.html' title='Querying HKEY_CURRENT_USER remotely'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-4840476846068238289</id><published>2010-08-18T10:24:00.000-07:00</published><updated>2010-08-18T10:25:12.270-07:00</updated><title type='text'>Command Line Screen Recording</title><content type='html'>http://camstudio.org/blog/camstudio-command-line-v01-released&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above will be super sweet with PSEXEC to remotely launch screen recording on an unmanaged or a workstation that you cannot be present for.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-4840476846068238289?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/4840476846068238289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=4840476846068238289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4840476846068238289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/4840476846068238289'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/08/command-line-screen-recording.html' title='Command Line Screen Recording'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5655594249814319657</id><published>2010-06-18T15:22:00.000-07:00</published><updated>2010-06-18T16:23:43.738-07:00</updated><title type='text'>AppleTV Harddrive Hack</title><content type='html'>Everyone knows how to upgrade your AppleTV hard drive with a bigger IDE drive, but with a dremel you can upgrade it to a SATA drive.  Follow the same instructions for adding the AppleTV software to a 2.5" SATA drive.  Then get started on adding the 500GB drive to the AppleTV.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) AppleTV and new 500GB SATA 2.5" HDD&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_E0GX9VvxUBU/TBvza2ZK5RI/AAAAAAAAADo/hlacBV2xPbU/s1600/IMG_1923.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_E0GX9VvxUBU/TBvza2ZK5RI/AAAAAAAAADo/hlacBV2xPbU/s400/IMG_1923.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484244613856945426" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Remove the bottom of the AppleTV&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TBv0GPU0-FI/AAAAAAAAADw/8ujb03T6zMA/s1600/IMG_1924.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/TBv0GPU0-FI/AAAAAAAAADw/8ujb03T6zMA/s400/IMG_1924.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484245359283992658" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) Remove the original AppleTV hard drive&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv07e_ZQqI/AAAAAAAAAD4/Un6L2dbpbGA/s1600/IMG_1925.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv07e_ZQqI/AAAAAAAAAD4/Un6L2dbpbGA/s400/IMG_1925.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484246274022130338" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) You will need to poke a hole in the IDE cable on the AppeTV as it's key'ed.  The OEM 2.5" IDE to SATA converter does not have the pin missing for the key'ed hole.&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv2EeuuWeI/AAAAAAAAAEA/buuWi-0vqWk/s1600/IMG_1932.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv2EeuuWeI/AAAAAAAAAEA/buuWi-0vqWk/s400/IMG_1932.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484247528082659810" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5) It's very important to orientate the cable properly on the IDE to SATA converter as laptop IDE contains additional pins for power.  If you orientate it wrong you can damage the hard drive or the converter.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv3ZgOUIiI/AAAAAAAAAEI/uGpB7JIGr4M/s1600/IMG_1933.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv3ZgOUIiI/AAAAAAAAAEI/uGpB7JIGr4M/s400/IMG_1933.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5484248988772475426" style="cursor: pointer; width: 300px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6) The AppleTV with SATA converter and 500GB HDD.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv4k1yDIgI/AAAAAAAAAEQ/p197Z6AFPug/s1600/IMG_1934.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv4k1yDIgI/AAAAAAAAAEQ/p197Z6AFPug/s400/IMG_1934.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484250283049689602" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7) Before modding the AppleTV I connected it to the TV to verify functionality&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv6xKzDFII/AAAAAAAAAEg/TQXAzhfLziM/s1600/IMG_1939.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv6xKzDFII/AAAAAAAAAEg/TQXAzhfLziM/s400/IMG_1939.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484252693872710786" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Success!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;8) Modification time.  This is the space you have to work with.&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv7VYsejzI/AAAAAAAAAEo/nLHeBPhTtKU/s1600/IMG_1940.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv7VYsejzI/AAAAAAAAAEo/nLHeBPhTtKU/s400/IMG_1940.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484253316078538546" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9) Because space is such so tight we need to chop off one of mounting posts and a part of the shield/baffle.&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv9Ko4JP5I/AAAAAAAAAEw/32iijAcCAos/s1600/IMG_19402.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/TBv9Ko4JP5I/AAAAAAAAAEw/32iijAcCAos/s400/IMG_19402.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5484255330467135378" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;10) We're so down to the wire with space we need to clip off the top of the IDE cable.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv-M4B7X4I/AAAAAAAAAE4/JvskyJ1-BuE/s1600/IMG_1941.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv-M4B7X4I/AAAAAAAAAE4/JvskyJ1-BuE/s400/IMG_1941.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484256468406067074" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv-Nb05_HI/AAAAAAAAAFA/h-Y7pgc_W8E/s1600/IMG_1942.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv-Nb05_HI/AAAAAAAAAFA/h-Y7pgc_W8E/s400/IMG_1942.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484256478015126642" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;11) Test fitting&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_E0GX9VvxUBU/TBv_GSVDoII/AAAAAAAAAFI/XENT8zmQs0w/s1600/IMG_1943.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/TBv_GSVDoII/AAAAAAAAAFI/XENT8zmQs0w/s400/IMG_1943.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484257454718165122" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;It Fits!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;12) Dremel off the mounting stand (top right corner)&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv_zhaYKPI/AAAAAAAAAFQ/Ak7iGZ5VBao/s1600/IMG_1947.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/TBv_zhaYKPI/AAAAAAAAAFQ/Ak7iGZ5VBao/s400/IMG_1947.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5484258231861127410" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Put it back together and you're all done!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5655594249814319657?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5655594249814319657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5655594249814319657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5655594249814319657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5655594249814319657'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/06/appletv-harddrive-hack.html' title='AppleTV Harddrive Hack'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_E0GX9VvxUBU/TBvza2ZK5RI/AAAAAAAAADo/hlacBV2xPbU/s72-c/IMG_1923.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-3471685219531773173</id><published>2010-04-20T15:27:00.000-07:00</published><updated>2010-04-20T15:32:17.345-07:00</updated><title type='text'>Pushing View Controllers</title><content type='html'>Pushing View Controllers is ridiculously simple.  You can do it in 2 lines of code, but with 2 dependancies.&lt;div&gt;1) Create a navigationController object in the AppDelegate file (.h and .m).&lt;br /&gt;&lt;div&gt;2) You must make a UIViewController object and add its header to the View Controller header you want to push *from*&lt;/div&gt;&lt;div&gt;3)&lt;/div&gt;&lt;div&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#480085;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#368288;"&gt;PhotoListView&lt;/span&gt;&lt;span style="color:#000000;"&gt; *secondPage = [[&lt;/span&gt;&lt;span style="color:#368288;"&gt;PhotoListView&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;alloc&lt;span style="color:#000000;"&gt;] &lt;/span&gt;initWithNibName&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&lt;span style="color:#e90000;"&gt;@"PhotoListView"&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;bundle&lt;span style="color:#000000;"&gt;:[&lt;/span&gt;&lt;span style="color:#7e11ad;"&gt;NSBundle&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;mainBundle&lt;span style="color:#000000;"&gt;]];&lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#480085;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;[[&lt;/span&gt;&lt;span style="color:#d200a5;"&gt;self&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;navigationController&lt;span style="color:#000000;"&gt;] &lt;/span&gt;pushViewController&lt;span style="color:#000000;"&gt;:secondPage &lt;/span&gt;animated&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&lt;span style="color:#d200a5;"&gt;YES&lt;/span&gt;&lt;span style="color:#000000;"&gt;];&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#480085;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#480085;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#480085;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia, serif;font-size:130%;color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;4) Done.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-3471685219531773173?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/3471685219531773173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=3471685219531773173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/3471685219531773173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/3471685219531773173'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/04/pushing-view-controllers.html' title='Pushing View Controllers'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5346006943000575378</id><published>2010-04-20T15:22:00.001-07:00</published><updated>2010-04-20T15:27:03.633-07:00</updated><title type='text'>Getting back into Objective-C Programming</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;Thanks to Stanfords C193P course.&lt;div&gt;Some things I've found along the way:&lt;/div&gt;&lt;div&gt;FYI, because of the black text you'll need to copy/paste to see the entire codeblock&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Convert a NSArray to C array:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#1b5a5e;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#7e11ad;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#1b5a5e;"&gt;&lt;span style="color:#7e11ad;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;NSArray&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; *pointsArray = [&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#368288;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PolyShape&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;pointsForPolygonInRect&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;:rect &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;numberOfSides&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;:[&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#368288;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;polygon&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;numberOfSides&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;]];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#008d00;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;//count the number of objects in the array and set a matching integer&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#d200a5;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; i;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;i=[pointsArray &lt;/span&gt;&lt;span style="color:#480085;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;count&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;];&lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#008d00;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;//setup our C array to match the number of objects in the pointsArray...&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#7e11ad;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CGPoint&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; thePointArray[i];&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color:#008d00;"&gt;&lt;span style="color:#000000;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;//for each object in the pointsArray, set a CGPoint value, add it to the C-Array (thePointArray) in it's matching index&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#d200a5;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;for&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; (&lt;/span&gt;&lt;span style="color:#d200a5;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;id&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; object &lt;/span&gt;&lt;span style="color:#d200a5;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; pointsArray) { &lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#7e11ad;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CGPoint&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; thePoint = [object &lt;/span&gt;&lt;span style="color:#480085;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CGPointValue&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;];&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;i--;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;thePointArray[i] = &lt;/span&gt;&lt;span style="color:#480085;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CGPointMake&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(thePoint.&lt;/span&gt;&lt;span style="color:#7e11ad;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;x&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;, thePoint.&lt;/span&gt;&lt;span style="color:#7e11ad;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;y&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;);&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5346006943000575378?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5346006943000575378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5346006943000575378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5346006943000575378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5346006943000575378'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/04/getting-back-into-objective-c.html' title='Getting back into Objective-C Programming'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-5745709882661180494</id><published>2010-01-15T10:22:00.001-08:00</published><updated>2010-01-15T10:33:24.309-08:00</updated><title type='text'>Uninstall products from the command line</title><content type='html'>Uninstalling products from the command line is tricky when there is no shortcut to parse. So we need to go to the registry and pull out information of where the program exists in there, and the proper product code (a GUID). that's unique to every system. To do this I have employed the mightiest of tools, egrep.&lt;br /&gt;&lt;br /&gt;You'll need to find egrep for Windows. It's getting harder and harder to find.&lt;br /&gt;&lt;br /&gt;Here's a script I made to uninstall a program called "Driver and Utility".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;reg query&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products&lt;br /&gt;/s &gt; "%TEMP%\reguninstall.txt"&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;TYPE "%TEMP%\reguninstall.txt" &lt;/span&gt;&lt;/span&gt;&lt;a href="file://myk/netlogon/grep.exe"&gt;&lt;span style="font-family:courier new;font-size:100%;"&gt;\\myk\netlogon\grep.exe&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:100%;"&gt; -B 15 -E "Driver &amp;amp; Utility" &lt;/span&gt;&lt;a href="file://myk/netlogon/grep.exe"&gt;&lt;span style="font-family:courier new;font-size:100%;"&gt;\\myk\netlogon\grep.exe&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:100%;"&gt; -o -E&lt;br /&gt;"UninstallString.+" &lt;/span&gt;&lt;a href="file://myk/netlogon/grep.exe"&gt;&lt;span style="font-family:courier new;font-size:100%;"&gt;\\myk\netlogon\grep.exe&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:100%;"&gt; -o -E "MsiExec.+" &gt; "%temp%\uninstallcmd.txt"&lt;br /&gt;FOR /F "tokens=1-10 delims={" %A IN ('TYPE "%temp%\uninstallcmd.txt"') DO&lt;br /&gt;msiexec.exe /x {%B /qb&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;You'll have to excuse the line cropping. This script does 3 things.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Georgia;"&gt;#1, it pulls every program option from the registry and saves it in a file&lt;br /&gt;#2, it then greps for the program name. This needs to be specific. Using grep we can ask it to pull lines previous to finding the query. We pull back 15 lines because it's a big key and we need to find the GUID&lt;br /&gt;#3, we make a variable out of the GUID and execute the uninstall command.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;font-size:100%;"&gt;The final uninstall command should look like this:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Georgia;"&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;msiexec.exe /x {48435D4A-BDAF-4AC3-B172-B25F1AADE6C6} /qb&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:lucida grande;font-size:100%;"&gt;Voila.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-5745709882661180494?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/5745709882661180494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=5745709882661180494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5745709882661180494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/5745709882661180494'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2010/01/uninstall-products-from-command-line.html' title='Uninstall products from the command line'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-7818314737167226203</id><published>2009-09-29T21:47:00.001-07:00</published><updated>2009-10-27T11:47:25.357-07:00</updated><title type='text'></title><content type='html'>Remote Logoff terminal sessions:&lt;div&gt;http://anandpv.spaces.live.com/blog/cns!AFCCA5892B178862!804.entry&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Segoe UI,Tahoma,Arial,Sans-serif', Verdana, Arial; font-size: 13px; line-height: 17px; color: rgb(255, 255, 255); "&gt;&lt;h4 class="beTitle" id="subjcns!AFCCA5892B178862!804" style="line-height: 18px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 17px; "&gt;How to logoff remote desktop sessions via command line tools?&lt;/h4&gt;&lt;div id="msgcns!AFCCA5892B178862!804" class="bvMsg" style="line-height: 17px; width: 820px; overflow-x: hidden; overflow-y: hidden; text-overflow: ellipsis; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;This trick I learned from my one of ex-college.  In Windows servers, only two remote desktop sessions allowed with administrative access. There are situations, you can't connect to the server via remote desktop because of two sessions already active.  You may have seen this dialog box. ("Remote Desktop Disconnected", "This computer can't connect to the remote computer")&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;img src="http://www.stevetrefethen.com/blog/content/binary/WindowsLiveWriter/LogoffaRemoteDesktopsessionremotely_11A7B/image_8.png" style="line-height: 17px; " /&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;Usually Windows Administrators, open "Terminal Services Manager" (in Administrative tools), connect to the problematic server and log off the unwanted sessions.  There are easy ways if you love command line based tools.&lt;/p&gt;&lt;h2 style="line-height: 23px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 21px; "&gt;Query the Remote Server for Current Terminal Sessions&lt;/h2&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;To query and list the sessions on the remote session, you could use QUser.exe or QWinsta&lt;/p&gt;&lt;h4 style="line-height: 16px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 15px; "&gt;1. QUser&lt;/h4&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;QUser command comes with all the latest Windows clients and servers. This will list the sessions of the remote server (or local machine).&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; color:#0000ff;"&gt;&lt;strong style="line-height: 17px; font-weight: bold; "&gt;NOTE: if you are using Windows XP, you need to add this location into your System path: C:\Windows\System32\DLLCache. To do this, in command prompt, type the following.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; color:#0000ff;"&gt;&lt;strong style="line-height: 17px; font-weight: bold; "&gt;SET PATH = %PATH%;C:\Windows\System32\DLLCache;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;QUser help shows,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\Anand&gt;QUser /?&lt;br /&gt;Display information about users logged on to the system.&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;QUERY USER [username | sessionname | sessionid] [/SERVER:servername]&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;  username            Identifies the username.&lt;br /&gt;  sessionname         Identifies the session named sessionname.&lt;br /&gt;  sessionid           Identifies the session with ID sessionid.&lt;br /&gt;  /SERVER:servername  The server to be queried (default is current).&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;E.g.,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;quser /server:MyCitrixSVR&lt;br /&gt;USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME&lt;br /&gt;johndoe               ica-tcp#966        10  Active          7  7/31/2008 3:04 PM&lt;br /&gt;averagejoe            ica-tcp#969         1  Active          9  7/31/2008 3:30 PM&lt;br /&gt;familyman             ica-tcp#984         5  Active       1:06  7/31/2008 4:33 PM&lt;br /&gt;normaldude            ica-tcp#987         2  Active          4  7/31/2008 6:20 PM&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 style="line-height: 16px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 15px; "&gt;2. QWinsta&lt;/h4&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;QWinsta is little different and better. It has more features and options. It comes with all flavors of Windows.  QWinsta command line help displays as,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;qwinsta /?&lt;br /&gt;Display information about Terminal Sessions.&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;QUERY SESSION [sessionname | username | sessionid]&lt;br /&gt;              [/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER]&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;  sessionname         Identifies the session named sessionname.&lt;br /&gt;  username            Identifies the session with user username.&lt;br /&gt;  sessionid           Identifies the session with ID sessionid.&lt;br /&gt;  /SERVER:servername  The server to be queried (default is current).&lt;br /&gt;  /MODE               Display current line settings.&lt;br /&gt;  /FLOW               Display current flow control settings.&lt;br /&gt;  /CONNECT            Display current connect settings.&lt;br /&gt;  /COUNTER            Display current Terminal Services counters information.&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt; &lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;E.g.,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;qwinsta /server:citrixserver&lt;br /&gt;SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE&lt;br /&gt;                                             0  Disc    rdpwd&lt;br /&gt;ica-tcp                                 65536  Listen  wdica&lt;br /&gt;rdp-tcp                                 65537  Listen  rdpwd&lt;br /&gt;console                                    16  Conn    wdcon&lt;br /&gt;ica-tcp#966       johndoe                  10  Active  wdica&lt;br /&gt;ica-tcp#969       apple                     1  Active  wdica&lt;br /&gt;ica-tcp#984       averagejoe                5  Active  wdica&lt;br /&gt;ica-tcp#987       familyman                 2  Active  wdica&lt;br /&gt;ica-tcp#989       whoisme                   3  Active  wdica&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;You are welcome to try the other options QWinsta provides.&lt;/p&gt;&lt;h2 style="line-height: 23px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 21px; "&gt;Logoff the Remote Sessions&lt;/h2&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;To Log off the terminal session of the remote server, you can use any one of two command line tools. One of LOGOFF and another one is RWINSTA. Before you log off the remote session, you should know the "Session ID" which you get it from "QUSER" OR "QWINSTA" commands as above stated.&lt;/p&gt;&lt;h4 style="line-height: 16px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 15px; "&gt;1. Logoff&lt;/h4&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;Logoff command kicks off (logging off) the specified remote session. Log off help shows,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;logoff /?&lt;br /&gt;Terminates a session.&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V]&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;  sessionname         The name of the session.&lt;br /&gt;  sessionid           The ID of the session.&lt;br /&gt;  /SERVER:servername  Specifies the Terminal server containing the user&lt;br /&gt;                      session to log off (default is current).&lt;br /&gt;  /V                  Displays information about the actions performed.&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;E.g.,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;logoff /server:infra-apps 1 /v&lt;br /&gt;Logging off session ID 1&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 style="line-height: 16px; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(255, 255, 255); font-size: 15px; "&gt;2. RWinsta&lt;/h4&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;RWinsta has same parameters and does same thing as log off command. It simply means &lt;strong style="line-height: 17px; font-weight: bold; "&gt;R&lt;/strong&gt;eset &lt;strong style="line-height: 17px; font-weight: bold; "&gt;WIN&lt;/strong&gt;dows &lt;strong style="line-height: 17px; font-weight: bold; "&gt;STA&lt;/strong&gt;tion. The help goes as,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;RWinsta /?&lt;br /&gt;Reset the session subsytem hardware and software to known initial values.&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;RESET SESSION {sessionname | sessionid} [/SERVER:servername] [/V]&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;  sessionname         Identifies the session with name sessionname.&lt;br /&gt;  sessionid           Identifies the session with ID sessionid.&lt;br /&gt;  /SERVER:servername  The server containing the session (default is current).&lt;br /&gt;  /V                  Display additional information.&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;E.g.,&lt;/p&gt;&lt;blockquote style="line-height: 17px; "&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;&lt;span style="line-height: normal; font-family:Courier New;"&gt;C:\&gt;RWinsta /Server:MyWinServer 1&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;Note: RWinsta command does not return anything.&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;Happy Re-setting the remote sessions (Hey, stop cursing your co-workers who didn't log off their sessions).&lt;/p&gt;&lt;p style="line-height: 17px; margin-top: 0px; margin-right: 0px; margin-bottom: 1.35em; margin-left: 0px; "&gt;Keywords: Reset remote session, Remote Desktop Session&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-7818314737167226203?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/7818314737167226203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=7818314737167226203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7818314737167226203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7818314737167226203'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2009/09/hello-from-tv-land.html' title=''/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-7198149404821123752</id><published>2009-08-25T23:02:00.000-07:00</published><updated>2009-08-25T23:22:38.118-07:00</updated><title type='text'>Setting up Privoxy on Windows Server 2003</title><content type='html'>1) Install Privoxy&lt;br /&gt;What is Privoxy? Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk. Privoxy has a flexible configuration and can be customized to suit individual needs and tastes. It has application for both stand-alone systems and multi-user networks.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 185px; height: 124px;" src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTSI5dRTaI/AAAAAAAAABA/manLKEUYTaY/s400/01.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374151305664220578" /&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTSXCInXPI/AAAAAAAAABI/gXnL_VU7cxw/s400/02.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374151548511673586" style="text-align: justify;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 184px; height: 125px; " /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 213px; height: 144px;" src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTS4k06yyI/AAAAAAAAABQ/RUFmbq1x2fI/s400/03.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152124759984930" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;2) Setup a Privoxy User account and add it to the Local Administrators group to allow Privoxy to run as a service.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_E0GX9VvxUBU/SpTS4zvqKjI/AAAAAAAAABY/mIMEMNrYZkc/s1600-h/04.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/SpTS4zvqKjI/AAAAAAAAABY/mIMEMNrYZkc/s400/04.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152128764455474" style="cursor: pointer; width: 162px; height: 90px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3) Set Default Domain Group Policy to disallow local-login for the service account and allow Log on as a service.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_E0GX9VvxUBU/SpTS5U_oXfI/AAAAAAAAABg/-Zu_GHii-Kk/s1600-h/05.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/SpTS5U_oXfI/AAAAAAAAABg/-Zu_GHii-Kk/s400/05.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152137689816562" style="cursor: pointer; width: 400px; height: 283px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;4) Set Privoxy as a service&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTS6BsjMcI/AAAAAAAAABo/A6HLCW7ANWI/s1600-h/07.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTS6BsjMcI/AAAAAAAAABo/A6HLCW7ANWI/s400/07.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152149689381314" style="cursor: pointer; width: 400px; height: 203px; " /&gt;&lt;/a&gt;A&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5) Configure the Privoxy service to run as the Privoxy user&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTS6at25II/AAAAAAAAABw/KEo4C4bLtrs/s1600-h/08.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTS6at25II/AAAAAAAAABw/KEo4C4bLtrs/s400/08.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152156405752962" style="cursor: pointer; width: 400px; height: 282px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6) Set the Privoxy service as Automatic and set Recovery to restart the service if fails after one minute.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_E0GX9VvxUBU/SpTTkb4pNTI/AAAAAAAAAB4/UCUfx7NbhH8/s1600-h/09.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/SpTTkb4pNTI/AAAAAAAAAB4/UCUfx7NbhH8/s400/09.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152878273934642" style="cursor: pointer; width: 160px; height: 180px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTTk8zZWyI/AAAAAAAAACA/mEQTtVRooRc/s1600-h/10.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTTk8zZWyI/AAAAAAAAACA/mEQTtVRooRc/s400/10.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152887110294306" style="cursor: pointer; width: 160px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;7) Create three new Organizational Units called “Full Internet Access” “Limited Internet Access” and “No Internet Access” and move the users into their proper organizational units.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTTltJJLTI/AAAAAAAAACI/VGfbpMLv3Ew/s1600-h/11.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTTltJJLTI/AAAAAAAAACI/VGfbpMLv3Ew/s400/11.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152900086410546" style="cursor: pointer; width: 400px; height: 281px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E0GX9VvxUBU/SpTTltJJLTI/AAAAAAAAACI/VGfbpMLv3Ew/s1600-h/11.jpg"&gt;&lt;/a&gt;8) Under Limited Internet Access, create a Group Policy called “IE Proxy Limited” and within that policy, uncheck “Use the same proxy for all addresses”, check “Enable proxy settings”, and in the “Address of proxy” set it to the server’s IP address for HTTP and Secure.  Change the port to 8118 for those two.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_E0GX9VvxUBU/SpTTlwv-UeI/AAAAAAAAACQ/hVk50QNlalw/s1600-h/12.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_E0GX9VvxUBU/SpTTlwv-UeI/AAAAAAAAACQ/hVk50QNlalw/s400/12.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152901054583266" style="cursor: pointer; width: 114px; height: 126px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTTmQEz2hI/AAAAAAAAACY/UNpP5tiC5NM/s1600-h/13.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTTmQEz2hI/AAAAAAAAACY/UNpP5tiC5NM/s400/13.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374152909463476754" style="cursor: pointer; width: 243px; height: 180px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In addition, within that group policy set “Disable changing proxy settings” to Enabled:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_E0GX9VvxUBU/SpTUPgU0QEI/AAAAAAAAACg/vrCJBy77h-s/s1600-h/14.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/SpTUPgU0QEI/AAAAAAAAACg/vrCJBy77h-s/s400/14.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374153618200215618" style="cursor: pointer; width: 400px; height: 126px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;9) Under the “No Internet Access”, create a Group Policy called “IE Proxy No Internet” and within that policy, uncheck “Use the same proxy for all addresses”, check “Enable proxy settings”, and in the “Address of proxy” set it to IP address 127.0.0.1 for HTTP and Secure.   Ensure to also set “Disable changing proxy settings to “Enabled”.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_E0GX9VvxUBU/SpTUQYkFeZI/AAAAAAAAACo/w7cURF_fSgg/s1600-h/15.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_E0GX9VvxUBU/SpTUQYkFeZI/AAAAAAAAACo/w7cURF_fSgg/s400/15.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374153633296644498" style="cursor: pointer; width: 238px; height: 178px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;10) Remove the comment on "trustfile"&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTUQ1MFkoI/AAAAAAAAACw/q9buqRW_JAs/s1600-h/16.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTUQ1MFkoI/AAAAAAAAACw/q9buqRW_JAs/s400/16.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5374153640980615810" style="cursor: pointer; width: 400px; height: 280px; " /&gt;&lt;/a&gt;&lt;br /&gt;10) Finally add the following to the Privoxy “Trust List” and you're all done!  :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-7198149404821123752?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/7198149404821123752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=7198149404821123752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7198149404821123752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7198149404821123752'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2009/08/setting-up-privoxy-on-windows-server.html' title='Setting up Privoxy on Windows Server 2003'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_E0GX9VvxUBU/SpTSI5dRTaI/AAAAAAAAABA/manLKEUYTaY/s72-c/01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-2304655564300625984</id><published>2009-04-03T00:38:00.000-07:00</published><updated>2009-04-03T00:40:15.484-07:00</updated><title type='text'>How to Print from the command line</title><content type='html'>Classexec is an amazing *and free* program.  This line should do it:&lt;br /&gt;&lt;br /&gt;"classExec.exe" "C:\Documents and Settings\ttye\test.xls" --action printto "HP Universal Printing PS" --ifexec&lt;br /&gt;&lt;br /&gt;That line will print Excel documents from a command line to a specific printer.&lt;br /&gt;&lt;br /&gt;The "HP Universal Printing PS" is the Printer Name.&lt;br /&gt;&lt;br /&gt;Download it here:&lt;br /&gt;http://fvue.nl/wiki/ClassExec&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-2304655564300625984?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/2304655564300625984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=2304655564300625984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2304655564300625984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2304655564300625984'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2009/04/how-to-print-from-command-line.html' title='How to Print from the command line'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-2191771803055993344</id><published>2009-01-29T11:49:00.000-08:00</published><updated>2009-01-29T11:57:15.421-08:00</updated><title type='text'>Creating a bootable USB key with Syslinux and VistaPE</title><content type='html'>1) Format your USB key under VISTA or VISTAPE using diskpart:&lt;br /&gt;diskpart&lt;br /&gt;select disk 1&lt;br /&gt;clean&lt;br /&gt;create partition primary size=&lt;size of device&gt;&lt;br /&gt;select partition 1&lt;br /&gt;active&lt;br /&gt;format fs=fat32&lt;br /&gt;assign&lt;br /&gt;exit&lt;br /&gt; &lt;br /&gt;2) Save the boot sector using Bart's &lt;a href="http://www.nu2.nu/mkbt/"&gt;mkbt.exe&lt;/a&gt; program.  This is done on the command prompt using:&lt;br /&gt;&lt;blockquote&gt;mkbt.exe -x -c E: E:\VISTABT.bs&lt;/blockquote&gt;&lt;br /&gt;Where E: is your USB drive.&lt;br /&gt;&lt;br /&gt;3) Use Syslinux to install the syslinux bootsector.  Download &lt;a href="http://www.kernel.org/pub/linux/utils/boot/syslinux/"&gt;syslinux &lt;/a&gt;and then from the win32 folder execute the following:&lt;br /&gt;&lt;blockquote&gt;syslinux -ma E:&lt;/blockquote&gt;&lt;br /&gt;Where E: is your USB drive.&lt;br /&gt;&lt;br /&gt;-ma == update master boot record and make the partition active&lt;br /&gt;&lt;br /&gt;You should now have a bootable SYSLINUX USB key.  From here you can create a file on the root of your USB key called syslinux.cfg and enter the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#serial 0 19200&lt;br /&gt;default boot&lt;br /&gt;display boot.msg&lt;br /&gt;timeout 250&lt;br /&gt;prompt 1&lt;br /&gt;&lt;br /&gt;label boot&lt;br /&gt;    kernel VISTABT.bs&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;When you enter "boot" you will boot the Vista boot sector.  From here you can add Peter's &lt;a href="http://home.eunet.no/pnordahl/ntpasswd/"&gt;NTPasswordChg&lt;/a&gt; and other linux utilities without having to use Grub4DOS or any others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-2191771803055993344?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/2191771803055993344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=2191771803055993344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2191771803055993344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/2191771803055993344'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2009/01/creating-bootable-usb-key-with-syslinux.html' title='Creating a bootable USB key with Syslinux and VistaPE'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-7853006479647727228</id><published>2008-10-27T21:11:00.000-07:00</published><updated>2008-10-27T21:20:59.632-07:00</updated><title type='text'>AppleTV upgrade instructions</title><content type='html'>http://forums.macrumors.com/showthread.php?p=6505512&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sudo gpt destroy /dev/disk1&lt;br /&gt;sudo diskutil list&lt;br /&gt;sudo diskutil unmountDisk /dev/disk1&lt;br /&gt;sudo gpt create /dev/disk1&lt;br /&gt;diskutil unmountDisk /dev/disk1&lt;br /&gt;&lt;br /&gt;sudo gpt add -b 40 -i 1 -s 69632 -t efi /dev/disk1&lt;br /&gt;diskutil unmountDisk /dev/disk1&lt;br /&gt;sudo gpt add -b 69672 -i 2 -s 819200 -t 5265636F-7665-11AA-AA11-00306543ECAC /dev/disk1&lt;br /&gt;diskutil unmountDisk /dev/disk1&lt;br /&gt;&lt;br /&gt;sudo gpt add -b 888872 -i 3 -s 1843200 -t hfs /dev/disk1&lt;br /&gt;diskutil unmountDisk /dev/disk1&lt;br /&gt;&lt;br /&gt;sudo gpt show /dev/disk1&lt;br /&gt;diskutil unmountDisk /dev/disk1&lt;br /&gt;gpt add -b 2732072 -i 4 -s 485665063 -t hfs /dev/disk1&lt;br /&gt;&lt;br /&gt;sudo dd if=efi.dmg of=/dev/disk1s1 bs=1m&lt;br /&gt;sudo dd if=recovery.dmg of=/dev/disk1s2 bs=1m&lt;br /&gt;diskutil list&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;diskutil eject disk1&lt;br /&gt;gpt remove -i 4 disk1&lt;br /&gt;diskutil eject disk1&lt;br /&gt;gpt show disk1&lt;br /&gt;diskutil eject disk1&lt;br /&gt;gpt add -b 2732072 -i 4 -t hfs /dev/disk1&lt;br /&gt;diskutil eject disk1&lt;br /&gt;newfs_hfs -J -v Media /dev/disk1s4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-7853006479647727228?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/7853006479647727228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=7853006479647727228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7853006479647727228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/7853006479647727228'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2008/10/appletv-upgrade-instructions.html' title='AppleTV upgrade instructions'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-3025406781474575356</id><published>2008-10-09T12:44:00.001-07:00</published><updated>2008-10-09T12:46:13.564-07:00</updated><title type='text'>Linpak vs. Prime 95</title><content type='html'>I've done some research on which programs you can use to test your overclock or stock cooling to determine if you have a stable system.  Presently, the winner is Linkpak.  You can get a copy with &lt;a href="http://www.xtremesystems.org/forums/showthread.php?t=197835"&gt;GUI front end here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Setup:&lt;br /&gt;&lt;br /&gt;1) BlackIce Xtreme 480&lt;br /&gt;2) Laing DDC 3.25 pump&lt;br /&gt;3) DTek Fusion waterblock&lt;br /&gt;4) Delta AFB1212VHE 120x38mm fan&lt;br /&gt;&lt;br /&gt;The fans were run at maximum speed.&lt;br /&gt;&lt;br /&gt;CPU at stock was using 123W (measured via current clamp) at it's reported maximum.  HWMonitor reported ~119-121W.  CPU is rated for 136W.&lt;br /&gt;&lt;br /&gt;Using a Striker II Extreme, 4GB DDR2 and a QX9770 the following overclocks were achieved:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;MHZ      X        FSB      RAM      CPU V&lt;br /&gt;4200 10.5 1600 1333 1.5250V&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;CPU at this stage was consuming 143W (via current clamp) and 139W via HWMonitor.&lt;br /&gt;&lt;br /&gt;This passed Prime95 quad-core for over two hours.&lt;br /&gt;&lt;br /&gt;Running Linpak with 1/4 memory used over 5 iterations resulted in a mismatch (failure).&lt;br /&gt;&lt;br /&gt;Increasing the voltage to 1.650V resulted in a pass on Linpak using the 5 iterations, 1/4 memory.  CPU was now consuming 156W via current clamp (HWMonitor ~150-153W).  The temperature, however, was sitting around 90C when under load per core.  Idle was ~40C.&lt;br /&gt;&lt;br /&gt;In an effort to see where Prime95 and Linpak diverged from their pass/fail I started decreasing the voltage till Linpak failed and then continued till Prime95 failed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;VOLTAGE        PRIME95         LINPAK&lt;br /&gt;1.650V         PASS            PASS&lt;br /&gt;1.625V         PASS            PASS&lt;br /&gt;1.600V         PASS            PASS&lt;br /&gt;1.575V         PASS            FAIL&lt;br /&gt;1.550V         PASS            FAIL&lt;br /&gt;1.525V         PASS            FAIL&lt;br /&gt;1.500V         FAIL            FAIL&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Each pass of Prime was run for 2 hours.  Linpak took less than a few minutes.  In an effort to "increase" Linpaks sensitivity I increased it's memory consumption to 1/2 and iterations to 10.  This did show a more sensitive failure point.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;VOLTAGE        PRIME95         LINPAK&lt;br /&gt;1.650V         PASS            PASS&lt;br /&gt;1.625V         PASS            PASS&lt;br /&gt;1.600V         PASS            &lt;strong&gt;FAIL&lt;/strong&gt;&lt;br /&gt;1.575V         PASS            FAIL&lt;br /&gt;1.550V         PASS            FAIL&lt;br /&gt;1.525V         PASS            FAIL&lt;br /&gt;1.500V         FAIL            FAIL&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linpak's time to run each completed set of tests more than doubled but was still less than 10mins.&lt;br /&gt;&lt;br /&gt;During this time Linpak created more heat then Prime95 as well, although Intel still provides tools that actually generate *more* heat then Linpak can do (about 5-10W more).&lt;br /&gt;&lt;br /&gt;In the end, Linpak is a great tool and signficantly more sensitive and faster at finding stable clocks then Prime95.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-3025406781474575356?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/3025406781474575356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=3025406781474575356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/3025406781474575356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/3025406781474575356'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2008/10/linpak-vs-prime-95.html' title='Linpak vs. Prime 95'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-6160112847133357838</id><published>2008-09-15T17:06:00.000-07:00</published><updated>2008-09-15T17:14:37.710-07:00</updated><title type='text'>TeraCopy Performance vs. Vista's native file copying</title><content type='html'>According to Mark Russinovich, the copy operations have been significantly improved for copying files of all sizes in Vista, and then improved again in SP1.&lt;br /&gt;&lt;br /&gt;I was curious about this program though and thought I should give an investigation.  With TeraCopy's latest version, 2.0a4, I copied a 3.2GB file (email archive -- not in use) and see the results.  Using Process Monitor, I monitored the file copy operation as it will give me detailed information as to what is going on in addition to giving me detailed timing information.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM75DAbWClI/AAAAAAAAAAQ/4_MNtwc3icI/s1600-h/teracopy-copy.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM75DAbWClI/AAAAAAAAAAQ/4_MNtwc3icI/s400/teracopy-copy.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5246404445982820946" /&gt;&lt;/a&gt;&lt;br /&gt;Here we can see TeraCopy reads the file at 10MB sizes at 3 intervals then writes out the data the same 10MB per 3 intervals.  The read and write are non-cached.  This method results in a copy that takes 01:43.5 seconds.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM75QDA2JlI/AAAAAAAAAAY/LGdFNek7Lns/s1600-h/explorer-copy.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM75QDA2JlI/AAAAAAAAAAY/LGdFNek7Lns/s400/explorer-copy.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5246404670015284818" /&gt;&lt;/a&gt;&lt;br /&gt;When we examine the copy done by explorer we see that explorer reads the file at a length of 1MB then writes it out in 64kB chunks (cached).  This method results in a copy that takes 01:15.5.  &lt;strong&gt;Almost 30 seconds faster than TeraCopy&lt;/strong&gt;!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_E0GX9VvxUBU/SM75v_MEPxI/AAAAAAAAAAg/uVV_-2-ouyc/s1600-h/explorer-memory.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_E0GX9VvxUBU/SM75v_MEPxI/AAAAAAAAAAg/uVV_-2-ouyc/s400/explorer-memory.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5246405218744418066" /&gt;&lt;/a&gt;&lt;br /&gt;Explorer memory usage.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_E0GX9VvxUBU/SM753JnAbOI/AAAAAAAAAAo/4eeZkRBUvAM/s1600-h/teracopy-memory.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_E0GX9VvxUBU/SM753JnAbOI/AAAAAAAAAAo/4eeZkRBUvAM/s400/teracopy-memory.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5246405341800852706" /&gt;&lt;/a&gt;&lt;br /&gt;TeraCopy memory usage.&lt;br /&gt;&lt;br /&gt;Reading comments on the Vista copy using memory and pushing out data to disk via the page file I put some performance counters on memory usage and then redid the copy.  Doing this we see that explorer.exe does consume more memory during the copy then teracopy.exe (~50MB vs. ~400MB).  Teracopy is correct and uses less RAM during copy and Vista could have a detrimental effect during times of low available memory usage.  To test this theory I set my Maximum RAM to be about 1.5GB which should cause lots of paging (according to the available memory graph).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM76DqSwcWI/AAAAAAAAAAw/LQMsFaMexTE/s1600-h/explorer-low-memory.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM76DqSwcWI/AAAAAAAAAAw/LQMsFaMexTE/s400/explorer-low-memory.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5246405556732719458" /&gt;&lt;/a&gt;&lt;br /&gt;The results are:  Teracopy.exe continues to use 50MB of RAM while executing and takes a little bit longer (01:46.5 vs. 01:43.5).   Explorer actually reduces its memory consumption to 50MB as well during the copy, but instead of it being flat you can see it caching in reads then clearing the cache as it finishes the write as evidenced by the "waves".  Explorer finished the copy in 01:28.2.&lt;br /&gt;&lt;br /&gt;Seeing Explorer gracefully degrade it's memory usage as it was getting tight is encouraging, but maybe TeraCopy has it right, and if there is absolutely no available memory then maybe it's faster then explorer.  To test this I further reduced my available memory to 512MB.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM76LJAyhyI/AAAAAAAAAA4/PbX_i4wPy_8/s1600-h/explorer-really-low-memory.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_E0GX9VvxUBU/SM76LJAyhyI/AAAAAAAAAA4/PbX_i4wPy_8/s400/explorer-really-low-memory.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5246405685237942050" /&gt;&lt;/a&gt;&lt;br /&gt;The results are:  Explorer.exe continues to use it's reduced amount of RAM (50MB) and the copy time goes up to 01:38.2 (explorer-really-low-memory.jpg).  Lastly, TeraCopy.exe's time increased almost a full second to 01:47.2 under the low memory conditions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*********************************************&lt;br /&gt;&lt;br /&gt;IN SUMMARY:&lt;br /&gt;&lt;br /&gt;I don't think TeraCopy provides any real value and actually appears to degrade performance under all scenario's compared to using Explorer's native file copy processes.  It is quite evident that Microsoft will gracefully degrade the caching algorithm Explorer uses to not consume all RAM while maintaining maximum file copy speed.  Using a non-cached copy mode is a huge performance penalty as caching hard drives reads in RAM significantly increases performance for reads and writes as the hard disk has to do less physical movement.  Since the hard drive is slowest link in the chain of read and write performance the less you actually need to go to it the better.  Paging out data for Explorer appears to be a non-issue as Explorer will instead reduce it's cache to avoid paging during read/writes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-6160112847133357838?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/6160112847133357838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=6160112847133357838' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6160112847133357838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/6160112847133357838'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2008/09/teracopy-performance-vs-vistas-native.html' title='TeraCopy Performance vs. Vista&apos;s native file copying'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_E0GX9VvxUBU/SM75DAbWClI/AAAAAAAAAAQ/4_MNtwc3icI/s72-c/teracopy-copy.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-1850966862902535492</id><published>2007-09-21T01:12:00.000-07:00</published><updated>2007-09-21T01:13:24.845-07:00</updated><title type='text'>WinPE-SRT-Package</title><content type='html'>How to get it working here:&lt;br /&gt;&lt;br /&gt;http://www.msfn.org/board/WinPE_SRT_Package_t104854.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-1850966862902535492?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/1850966862902535492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=1850966862902535492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1850966862902535492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/1850966862902535492'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2007/09/winpe-srt-package.html' title='WinPE-SRT-Package'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-8776891129179220980</id><published>2007-09-21T00:14:00.000-07:00</published><updated>2007-09-21T00:33:34.961-07:00</updated><title type='text'>WinPE-SRT-Package -- gone.  How to install it.</title><content type='html'>Part 1 of a miniseries.&lt;br /&gt;&lt;br /&gt;While investigating ways to implement the WinPE-SRT-Package manually I found I would have to do the work myself as I found nothing out in the wild.  I came across the following issues:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Windows PE cannot start because the actual SYSTEMROOT directory (X:\Windows) is different from the configured one (X:\$Windows.~BT\Windows). This can be configured with peimg /targetpath..."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Digging into the registry I found this was because of 1 registry key.  It's located here:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[HKEY_LOCAL_MACHINE\pe_software\Microsoft\Windows NT\CurrentVersion\WinPE]&lt;br /&gt;"PrepStatus"=dword:00000001&lt;br /&gt;&lt;strong&gt;"InstRoot"="X:\\$Windows.~BT\\"&lt;/strong&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;What is needed is to change InstRoot to the directory below your Windows directory.&lt;br /&gt;&lt;br /&gt;So, to enable this to work you'll need to set InstRoot=X:\&lt;br /&gt;&lt;br /&gt;Why does Microsoft do this?  So you can use a WinPE install off a harddisk with all the associated expanded files as oppoesd to a large WinPE image.&lt;br /&gt;&lt;br /&gt;At least, that's what I've figured :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-8776891129179220980?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/8776891129179220980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=8776891129179220980' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/8776891129179220980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/8776891129179220980'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2007/09/winpe-srt-package-gone-how-to-install.html' title='WinPE-SRT-Package -- gone.  How to install it.'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-526617851783787210</id><published>2007-06-13T22:02:00.000-07:00</published><updated>2007-06-13T22:03:19.180-07:00</updated><title type='text'>A good quote</title><content type='html'>Dave Winer says, "To create a usable piece of software, you have to fight for every fix, every feature, every little accommodation that will get one more person up the curve. There are no shortcuts. Luck is involved, but you don't win by being lucky, it happens because you fought for every inch."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-526617851783787210?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/526617851783787210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=526617851783787210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/526617851783787210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/526617851783787210'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2007/06/good-quote.html' title='A good quote'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-117565849501212851</id><published>2007-04-03T20:29:00.000-07:00</published><updated>2007-04-03T20:48:15.020-07:00</updated><title type='text'>Straighten' up shelves</title><content type='html'>Lots to do...  Lots to do...  Big things coming down the pipe.&lt;br /&gt;&lt;br /&gt;At Voodoo, work progresses on trying to hasten and solidify the software system.  This is an infinite effort and relatively stressful.&lt;br /&gt;&lt;br /&gt;The testing system (Haiti) has hit its stride and has matured marvelously.  We have a filtering system to not install programs that cause programs with certain hardware configurations (I'm looking at you, vendors!) or operating systems (Quake III and VISTA!).  And this enables tests that only work on specific operating systems (ie, WinSAT).&lt;br /&gt;&lt;br /&gt;Bugs to be worked out:&lt;br /&gt;After Sysprep &gt; WinSAT hangs on first boot (started by MSOOBE.exe).  Current work-around is Shift-F10 &gt; taskmgr.exe &gt; Processes tab &gt; End Process on WinSAT.  You can rerun WinSAT later.  Cause of this TBD.&lt;br /&gt;&lt;br /&gt;This problem is described in this links...&lt;br /&gt;&lt;br /&gt;http://forums.windowsvistamagazine.com/forums/thread/2343.aspx&lt;br /&gt;&lt;br /&gt;Odd that we see it on fresh systems...&lt;br /&gt;&lt;br /&gt;More testing is needed...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-117565849501212851?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/117565849501212851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=117565849501212851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/117565849501212851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/117565849501212851'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2007/04/straighten-up-shelves.html' title='Straighten&apos; up shelves'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-116157536244922252</id><published>2006-10-22T20:47:00.000-07:00</published><updated>2006-10-22T20:49:22.456-07:00</updated><title type='text'>Tech spec sheets...</title><content type='html'>Need to be made out of HTML.&lt;br /&gt;&lt;br /&gt;I'll SED.EXE the text out of the generated scores and replace place-holder text in the tech spec HTML page...  That should make generating spec sheets extremely easy...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-116157536244922252?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/116157536244922252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=116157536244922252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/116157536244922252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/116157536244922252'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/10/tech-spec-sheets.html' title='Tech spec sheets...'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-116157195273198025</id><published>2006-10-22T19:01:00.000-07:00</published><updated>2006-10-22T19:52:32.740-07:00</updated><title type='text'>Back to Voodoo...</title><content type='html'>Well...  Guess I'm going back to Voodoo.  To be in the R&amp;D portion of it all along with maintaining the Voodoo softwaring and testing system.&lt;br /&gt;&lt;br /&gt;To give you an idea about the inner workings of our softwaring process works:&lt;br /&gt;&lt;br /&gt;1) Technician enters the customers WO number.&lt;br /&gt;2) The computer pulls the system configuration from the database&lt;br /&gt;3) The machine then reads the system configuration and installs the correct OS.&lt;br /&gt;4) Upon reboot the machine parses the configuration and installs the cusomers chosen software and hardware drivers.  For the hardware we follow the "failing gracefully" guideline.  We actually enable SLI in all Nvidia configurations.  The Nvidia drivers will detect that it should have SLI but in a single card configuration it will throw up a dialog box stating that SLI will be auto-disabled.  And upon reboot the machine is correctly configured without adding any more detection/complexity.  Ahhh, failing gracefully :)&lt;br /&gt;5) Second QC is a script that checks all the "optical" portions of the computer.  This includes things like paint color, tattoo's, liquid color, etc.  Everything physical.  This test, when I return, will start to include things like counting video cards, ensuring SLI and crossfire is enabled,  etc.&lt;br /&gt;6) Lastly is Haiti.  Originally designed by Casey Inlow and myself, it is a comprehensive test suite of games, real-world and artificial applications.  Artificial applications include CPU Burn, Prime 95, etc.&lt;br /&gt;&lt;br /&gt;With HP, it will be nice and interesting to see what they think of all this work and effort.  I'm sure they have some very smart guys who might just laugh at all of this effort, or they might be blown away...?&lt;br /&gt;&lt;br /&gt;I guess time will tell...  Very shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-116157195273198025?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/116157195273198025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=116157195273198025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/116157195273198025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/116157195273198025'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/10/back-to-voodoo.html' title='Back to Voodoo...'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115835799207235111</id><published>2006-09-15T15:06:00.000-07:00</published><updated>2006-09-15T15:09:41.846-07:00</updated><title type='text'>The Unbeatable Problem.</title><content type='html'>&lt;p&gt;No problem is unbeatable if you look at it as files and registry entries (in Windows).&amp;nbsp;&amp;nbsp; I recently came across a very, very pain in the ass problem that &lt;a href="http://www.google.ca/search?hl=en&amp;amp;q=clipart+Class+not+registered.+Error+code+0x80040154&amp;amp;btnG=Search&amp;amp;meta="&gt;hasn't seemed to have been resolved&lt;/a&gt; anywhere.&amp;nbsp; Microsoft has a solution for it, but &lt;a href="http://support.microsoft.com/kb/302375/en-us?spid=2529&amp;amp;sid=216"&gt;Microsoft's solution&lt;/a&gt; did not resolve the issue I was having.&amp;nbsp; The interface on the clipart window worked-- to an extent.&amp;nbsp; You could NOT open any of the folders in the collection list.&amp;nbsp; My collections, Office&amp;nbsp;collections, Web collections, none of&amp;nbsp;them were expandable. &amp;nbsp;The user was getting this error message: &lt;/p&gt; &lt;p&gt;Clip art organizer cannot complete the requested task. &lt;br&gt;Class not registered. Error code 0x80040154&lt;/p&gt; &lt;p&gt;The solution for me?&amp;nbsp; Doing registry traces using Regmon to find out what registry keys it was using (using filemon revealed that there were no missing files).&lt;/p&gt; &lt;p&gt;Initially I found the error message repeated itself BEFORE drawing the collection list but then would continue after the message was displayed.&amp;nbsp; I then tried to time Regmon to monitor only MSTORE.EXE (the clip organizer app) to only monitor just before and then stop when the message was displayed.&amp;nbsp; The list of registry keys I got were HKCR and HKCU CLSID registry keys (Class ID's -- class not registered --&amp;gt; we're close here :)).&amp;nbsp; I went through each registry key but they all seemed fine (ie, they opened without issue).&amp;nbsp; So, step 2 was to repeat the process on a working machine.&amp;nbsp; There was no errors and the regmon dump looked almost identical on both machines with the differences being negligible.&lt;/p&gt; &lt;p&gt;Time to get into the nitty gritty.&amp;nbsp; So I opened each CLSID registry key found in the regmon dump in a working machine and the non-working machine.&amp;nbsp; I found TWO keys that did not match.&amp;nbsp; These were those keys:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;Windows Registry Editor Version 5.00 &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636390-f343-11d0-9477-00c04fd36226}]&lt;br&gt;@="OLE DB Rowset Proxy" &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636390-f343-11d0-9477-00c04fd36226}\Implemented Categories] &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636390-f343-11d0-9477-00c04fd36226}\Implemented Categories\{00000003-0000-0000-C000-000000000046}] &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636390-f343-11d0-9477-00c04fd36226}\InprocServer32]&lt;br&gt;@="C:\\Program Files\\Common Files\\System\\Ole DB\\msdaps.dll"&lt;br&gt;"ThreadingModel"="Both" &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636390-f343-11d0-9477-00c04fd36226}\ProgID]&lt;br&gt;@="DBRSTPRX.AsProxy.1" &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636390-f343-11d0-9477-00c04fd36226}\VersionIndependentProgID]&lt;br&gt;@="DBRSTPRX.AsProxy"&lt;/font&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;AND: &lt;blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;font color="#ffff00"&gt;Windows Registry Editor Version 5.00 &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636392-f343-11d0-9477-00c04fd36226}]&lt;br&gt;@="OLE DB Row Proxy" &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636392-f343-11d0-9477-00c04fd36226}\Implemented Categories] &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636392-f343-11d0-9477-00c04fd36226}\Implemented Categories\{00000003-0000-0000-C000-000000000046}] &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636392-f343-11d0-9477-00c04fd36226}\InprocServer32]&lt;br&gt;@="C:\\Program Files\\Common Files\\System\\Ole DB\\msdaps.dll"&lt;br&gt;"ThreadingModel"="Both" &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636392-f343-11d0-9477-00c04fd36226}\ProgID]&lt;br&gt;@="DBROWPRX.AsProxy.1" &lt;/font&gt; &lt;p&gt;&lt;font color="#ffff00"&gt;[HKEY_CLASSES_ROOT\CLSID\{ef636392-f343-11d0-9477-00c04fd36226}\VersionIndependentProgID]&lt;br&gt;@="DBROWPRX.AsProxy"&lt;/font&gt; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The "non-working" computer only had the Implemented Categories subkey in each of the main keys, missing InproceServer32, ProgID and VersionIndependentProgID. &lt;p&gt;Added those keys and alls well :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115835799207235111?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115835799207235111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115835799207235111' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115835799207235111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115835799207235111'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/09/unbeatable-problem.html' title='The Unbeatable Problem.'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115708610414946470</id><published>2006-08-31T21:35:00.000-07:00</published><updated>2006-09-20T11:40:07.870-07:00</updated><title type='text'>I'M NOT THE ONLY ONE!!!!</title><content type='html'>Who gets it ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informationweek.com/management/showArticle.jhtml?articleID=192300292"&gt;Google gets it too&lt;/a&gt;.  Some excerpts that follow my philosphy:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sometimes, value can be bought off the shelf, Merrill says, holding up a plastic fork as an example. But there are times when off-the-shelf software won't do. "Our culture is pretty deeply embedded in many of our processes," he says. "So what we don't want to do is buy a tool, which by extension changes the cultural aspects of the way we do things."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;It is my experience that off-the-shelf rarely works completely.  It can work in some capacity, but what good is using 40% of a product that lacks 60% of the features you need?&lt;br /&gt;&lt;br /&gt;What I like about the Google example is, like a plastic fork, the best commercial products you can purchase is simple "blocks" whose value becomes the way it helps you go from A to B.  Not A to C,D,E,1,3,5,6,7 but never getting to B or only doing it partially (or too much).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Google's unorthodox approach to managing its Ph.D.s drove its decision not to budget research and development separately, as most tech companies do. "You end up in many companies with this divide between research and engineering," explains Alan Eustace, senior VP of engineering and research. By dividing those budgets, he says, "you're pretty much guaranteeing institutionally that you won't be solving interesting problems."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;And it's true where I was previously employed and am employed now.  A divide between people who fix problems and those who work on ensuring those problems don't happen again.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;"Our goal is to automate as many things as we can because it makes unfun things not happen," Merrill says. "Nobody wants to have a boring job, right?"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Creating automation IS fun!  Doing repetitive tasks is not.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Merrill is evasive when asked what kinds of commercial PC software are used at Google. "More important than what we put on each desktop is how we think about what to put on each desktop," he says obliquely. "Goo-gle's philosophy is that choice is always better than control. Tightly centralized control gets in the way of innovation."&lt;br /&gt;&lt;br /&gt;He then takes a jab at CIOs--which he describes as a title used by "old-world companies"--at other companies. "Most people in my job try to control. 'Here are the three things you can buy.'" Merrill explains. "I try to control as a little as I possibly can but make it easy to work within parameters that I know how to work with."&lt;br /&gt;&lt;br /&gt;Merrill sees a distinction between tools that tell you something and tools that stop you from doing something. For example, he observes that some financial services institutions block instant messaging because of they way they interpret regulations. "We don't think that's the right approach here," he says.&lt;br /&gt;&lt;br /&gt;The right approach, as Merrill sees it: Talk a lot; use data, not intuition; automate wherever you can.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;That faith in group intelligence manifests itself in the lunch line. Google provides free meals to employees partly as a perk and to enhance productivity, but also to encourage interaction. It's about the pollination of ideas over salads and sandwiches. "If you want people to talk, if you want people to engage, how do you do that?" Merrill asks. "You give them lunch."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Interaction is the bane of all businesses.  NO ONE in a business wants to communicate -- you have to force them in some capacity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115708610414946470?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115708610414946470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115708610414946470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115708610414946470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115708610414946470'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/im-not-only-one.html' title='I&apos;M NOT THE ONLY ONE!!!!'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115574648085131943</id><published>2006-08-16T09:26:00.000-07:00</published><updated>2006-08-16T09:41:20.863-07:00</updated><title type='text'>AutoCAD is a devil in saint's clothing</title><content type='html'>Whenever problems arrise with AutoCAD it's a frustrating experience.  I'm sure that is coupled with my inexperience with troubleshooting this particular program.  It all boils down to two things (in Windows) when a program fails:&lt;br /&gt;&lt;br /&gt;1) It's a registry key gone crazy (incorrect permissions, wrong setting, wrong type, etc.)&lt;br /&gt;2) It's a file that's become mangled (incorrect permissions, wrong version)&lt;br /&gt;&lt;br /&gt;That's it.  Every problem in Windows is related to one (or both) of those two issues.&lt;br /&gt;&lt;br /&gt;AutoCAD is intimidating at first having never dealt with it.  We have a custom menu that is activated when AutoCAD is run.  On one particular user's machine, her AutoCAD was throwing up errors when trying to build this menu (cui file is write protected).  In attempting to troubleshoot this, I found the cui file referenced is indeed write protected.  But that wasn't the problem.  Checking with other users, they could not write to the file so her AutoCAD was trying to write to the file for some reason.  Launching her AutoCAD under my user account resulted in success...  So it could not have been the AutoCAD program installed on the machine.  This left two things:&lt;br /&gt;&lt;br /&gt;1) Some file in her profile is causing the issue and AutoCAD calls that file&lt;br /&gt;2) A registry key is incorrectly set&lt;br /&gt;&lt;br /&gt;Removing AutoCAD from her HKCU resulted in AutoCAD reconfiguring itself on launch and we did not get the error message but got a very slimmed down menu missing many functions.&lt;br /&gt;&lt;br /&gt;This indirectly is telling me that the registry is not the issue.  If the registry was the issue, the total removal of AutoCAD from HKCU should have resulted in it coming up no problem.  This leaves the other issue... A file is causing the headaches.  But, before I continued I had the user log on to another machine to ensure it was not her account causing the issue --&gt; AutoCAD worked fine on another machine under her account.  So it was computer specific.  Some file in her profile...&lt;br /&gt;&lt;br /&gt;AutoCAD keeps files in the following two folders in the users profile:&lt;br /&gt;C:\Documents and Settings\USER ACCOUNT\Local Settings\Application Data\AutoDesk&lt;br /&gt;and&lt;br /&gt;C:\Documents and Settings\USER ACCOUNT\Application Data\AutoDesk&lt;br /&gt;&lt;br /&gt;A file or couple of files in one (or both) of those folders must be causing my issue.&lt;br /&gt;&lt;br /&gt;Renaming those two folders to AutoDesk--old should resolve the issue if my troubleshooting is correct.&lt;br /&gt;&lt;br /&gt;Because I haven't and won't troubleshoot further to determine the exact file I won't know exactly which file caused or causes that issue but the solution is effective and cheap anyways.&lt;br /&gt;&lt;br /&gt;Other places preferences maybe stored are the My Documents folder.  So watch out there as well if your still having problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115574648085131943?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115574648085131943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115574648085131943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115574648085131943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115574648085131943'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/autocad-is-devil-in-saints-clothing.html' title='AutoCAD is a devil in saint&apos;s clothing'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115506231728456354</id><published>2006-08-08T11:33:00.000-07:00</published><updated>2006-08-08T11:38:37.316-07:00</updated><title type='text'>The Upwards War And Downwards Cycle</title><content type='html'>Everything you face today is a struggle.  Without clout, you ride the coattails of others until you can achieve clout enough to force issues out or complete them.  I face that ride pretty quickly.  Being with a company for six months and trying to offer new ideas to problems I had faced (and solved) previously can result in resentment.  It took me a year to build up enough clout at Voodoo, a company of 25 or so employees, to start enabling changes.  Can I do the same working at a company for only 3 months (+ 3 on contract)?&lt;br /&gt;&lt;br /&gt;The people around me who've seen my work are sold on it.  Unfortunately, it's the people who haven't seen it that make the decisions.&lt;br /&gt;&lt;br /&gt;This Friday will tell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115506231728456354?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115506231728456354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115506231728456354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115506231728456354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115506231728456354'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/upwards-war-and-downwards-cycle.html' title='The Upwards War And Downwards Cycle'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115455329337423102</id><published>2006-08-02T14:03:00.000-07:00</published><updated>2006-08-02T14:26:24.726-07:00</updated><title type='text'>Single Image Hardware Independent Operating System Independent Deployment</title><content type='html'>HOW TO:&lt;br /&gt;&lt;br /&gt;1) Make a OPK share (usually OPKTOOLS)&lt;br /&gt;2) Make a CFGSET and set it to be able to do Media Center / Tablet (use a Media Center 2005 CD's and combine the two CD's) IF possible.  (optionalsources=YES under [WINPE] in Winbom.ini)&lt;br /&gt;3) Boot a VM into WinPE and use the Winbom.ini created by the CFGSET to copy all the necessary files over. Once that's done the system should reboot, go back into WinPE immediantely.&lt;br /&gt;4) Kill FACTORY.EXE upon entering WinPE *IF* it's going to "Install Configuration Set"&lt;br /&gt;5) Make an IMAGE of the hard disk and call this "VIRGIN" (or clean or blank or whatever).&lt;br /&gt;6) Copy out winnt.sif located in the $WIN_NT.~BT$ folder to a network share. Within this one single file is the product key that determines what version of Windows you are going to have (Pro, Tablet or Media Center --&gt; as far as I know [but haven't tried] this will not work for HOME).&lt;br /&gt;&lt;br /&gt;7) You can now image a machine with the VIRGIN image and then copy over a WINNT.SIF to $WIN_NT$.~BT that has the proper product key using WinPE and FIRM. Since this is before the blue text-mode setup it is hardware independent and Windows will automatically configure itself for the number of processors it can support automatically. As well, because it's before the GUI mode configures itself via the product key, changing the WINNT.SIF file will change the type of Windows it will install itself as!&lt;br /&gt;&lt;br /&gt;Single Image Hardware Independent Operating System Independent Deployment (SIHIOSID)&lt;br /&gt;&lt;br /&gt;Boom baby! :D&lt;br /&gt;&lt;br /&gt;One Image to Rule them All!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115455329337423102?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115455329337423102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115455329337423102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115455329337423102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115455329337423102'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/single-image-hardware-independent.html' title='Single Image Hardware Independent Operating System Independent Deployment'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115454461261193946</id><published>2006-08-02T11:49:00.000-07:00</published><updated>2006-08-02T11:50:12.613-07:00</updated><title type='text'>Another blog that discusses WinPE!</title><content type='html'>&lt;a href="http://www.uvm.edu/~jgm/wordpress/"&gt;And other technical things!  Finally :)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115454461261193946?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115454461261193946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115454461261193946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115454461261193946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115454461261193946'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/another-blog-that-discusses-winpe.html' title='Another blog that discusses WinPE!'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115454308850395861</id><published>2006-08-02T11:01:00.000-07:00</published><updated>2006-08-02T11:40:02.986-07:00</updated><title type='text'>Utilizing WinPE in deployments</title><content type='html'>Browsing the web I found a good page &lt;a href="http://www.serverwatch.com/tutorials/print.php/3509286"&gt;highlighting some advantages of WinPE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The article is a little old and &lt;a href="http://oem.microsoft.com/script/agreements.aspx?download=xpsp2_2180_usa_x86fre_opk.zip&amp;OPK=true"&gt;WinPE is now available to downlad from MS sites &lt;/a&gt;and will be available with Vista. As well there is now a way to load the whole WINPE CD image into RAM so you don't require a CD drive.&lt;br /&gt;&lt;br /&gt;In my environment I use WinPE to help with the deployment process and it does it's job wonderfully. I've modified it to use &lt;a href="http://www.wpiw.net/"&gt;Windows Post Installer &lt;/a&gt;(WPI) to give an interface for the apps that should be deployed to the target system.&lt;br /&gt;&lt;br /&gt;My current environment is setup as follows:&lt;br /&gt;&lt;br /&gt;1) WinPE boots and logs the IP address of the present machine onto a network share. Our company has a site license for &lt;a href="http://www.famatech.com/download/index.php"&gt;RAdmin &lt;/a&gt;so that is installed on WinPE. This logging of its IP Address allows me to RAdmin into it and administer the WinPE environment without being physically present.&lt;br /&gt;&lt;br /&gt;2) WinPE presents a batch file "choices" screen, Reimaging is one of the options.&lt;br /&gt;&lt;br /&gt;Choosing reimage causes the following to happen:&lt;br /&gt;&lt;br /&gt;3) WinPE prompts for your user name, password and computer name which are stored in text files on a &lt;a href="http://www.msfn.org/board/index.php?showtopic=22135&amp;amp;st=0&amp;p=189446&amp;amp;#"&gt;RAM drive in WinPE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4) WinPE opens up WPI with a list of programs.&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.wpiw.net/screenshots/screen1.gif" border="0" /&gt; &lt;p&gt;5) Clicking "Begin install" causes WPI to output the programs selected into a text file on the WinPE RAM Drive.&lt;/p&gt;&lt;p&gt;6) RDeploy is then called to image the drive with the corporate standard image (I've learned I may need to add a choice to select between Tablet, MultiProcessor or Single Processor soon. I've thought another way around it I'll describe later).&lt;/p&gt;&lt;p&gt;7) After imaging the drive, &lt;a href="http://www.altiris.com/upload/rapideploy.pdf"&gt;FIRM.EXE &lt;/a&gt;(File System Independent Resource Management) copies over the approriate sysprep.inf while which contains your user name, password and parses the computer name you entered earlier to determine the correct OU that the system will be placed under. With this information the sysprep file contains enough information to join the machine to the domain without user intervention.&lt;/p&gt;&lt;p&gt;FIRM also copies over all the text files that contain your user name and password onto the machine for parsing later (this later is to map file shares and execute commands under a domain account).&lt;/p&gt;&lt;p&gt;8) The machine reboots and joins to the domain as per the sysprep script.&lt;/p&gt;&lt;p&gt;More to come later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115454308850395861?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115454308850395861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115454308850395861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115454308850395861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115454308850395861'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/utilizing-winpe-in-deployments.html' title='Utilizing WinPE in deployments'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115453818292932600</id><published>2006-08-02T09:44:00.000-07:00</published><updated>2006-08-02T10:06:22.343-07:00</updated><title type='text'>Filter orders down to the hardware level</title><content type='html'>So we have basic detection based on customer orders but there is a way to do it based on hardware configuration. I consider hardware configuration to be a poor way of filtering, but it is sometimes necessary as a company won't always update SKU's or the file that we filter fast enough (bad business process in that case). Sometimes though, it's required if you want to limit installs to useful software. If you were an OEM and shipped NERO with every system, NERO may not be useful to users who have only CD drives (non-writeable). To filter thourgh to ensure usefullness, it now becomes a two stage process:&lt;br /&gt;&lt;br /&gt;Find the SKU or customer order to ensure he gets, say, NERO.&lt;br /&gt;&lt;br /&gt;--------------------------------&lt;br /&gt;:Customer order file&lt;br /&gt;:responses.txt&lt;br /&gt;NERO-Y&lt;br /&gt;--------------------------------&lt;br /&gt;&lt;br /&gt;So we check to ensure that the client/customer has requested NERO:&lt;br /&gt;&lt;br /&gt;------------------------------&lt;br /&gt;:Check for NERO&lt;br /&gt;findstr /I /C:"NERO-Y" responses.txtIF '%ERRORLEVEL%' == '0' (&lt;br /&gt;SET NERO-FOUND=1&lt;br /&gt;ECHO Nero was found!&lt;br /&gt;) ELSE (&lt;br /&gt;SET NERO-FOUND=0&lt;br /&gt;ECHO Nero was NOT found!&lt;br /&gt;)&lt;br /&gt;------------------------------&lt;br /&gt;And now we filter for the hardware ID using &lt;a href="http://support.microsoft.com/?kbid=311272"&gt;DevCon&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;------------------------------&lt;br /&gt;:Find the CD Burning Hardware ID&lt;br /&gt;Devcon findall hwids * &gt; "%userprofile%\desktop\HWIDS.TXT"&lt;br /&gt;&lt;br /&gt;IF '%NERO-FOUND%' == '1' (&lt;br /&gt;findstr /I /C:"IDE\CDROMSONY_CD-RW__CRX230ED" HWIDS.TXT&lt;br /&gt;)&lt;br /&gt;IF '%ERRORLEVEL%' == '0' (&lt;br /&gt;:run silent setup command&lt;br /&gt;NERO.EXE /S&lt;br /&gt;ECHO Nero was installed!&lt;br /&gt;)&lt;br /&gt;---------------------------------&lt;br /&gt;&lt;br /&gt;We don't need an "ELSE" in the above as we expect it to fail gracefully and not require more code to tell it to simply continue as it will do so anyways.&lt;br /&gt;&lt;br /&gt;And now the OEM or corporation won't install useless software unless hardware that can take advantage of it is present. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115453818292932600?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115453818292932600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115453818292932600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115453818292932600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115453818292932600'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/filter-orders-down-to-hardware-level.html' title='Filter orders down to the hardware level'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115449342060378234</id><published>2006-08-01T21:31:00.000-07:00</published><updated>2006-08-01T21:38:30.630-07:00</updated><title type='text'>Failing Gracefully is the essence of life</title><content type='html'>To someone like myself whose never taken a programming course, &lt;a href="http://www.drunkenbatman.com/drunkenblog-archives/000581.html"&gt;this is revitalizing stuff:&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;I am very much in awe of the guy who invented barcodes; they are incredibly elegant. One trick is to notice that every digit in a barcode is two black stripes and two white stripes, so if you've read black-white-black-white you know you have a digit, no matter how quickly it happened. (If it happened too quickly, you can decide you're reading garbage and just bail.)&lt;br /&gt;One of the rules of writing algorithms that I've recently been sort of toying with is that we (as programmers) spend too much time trying to find provably correct solutions, when what we need to do is write really fast heuristics that fail incredibly gracefully.&lt;br /&gt;This is almost always how nature works. You don't have to have every cell in your eye working perfectly to be able to see. We can put together images with an incredible amount of damage to the mechanism, because it fails so gracefully and organically.&lt;br /&gt;This is, I am convinced, the next generation of programming, and it's something we're already starting to see: for instance, vision algorithms today are modeled much more closely after the workings of the eye, and are much more successful than they were twenty years ago.&lt;br /&gt;&lt;span style="color:#ffff66;"&gt;Wait wait wait, can you elaborate on this heuristics bit being the next big thing, because you just bent some people's brains. When I normally think of heuristics in computer science, I think of either "an educated guess" or "good enough".&lt;br /&gt;I.E., a game programmer doesn't have to run out Pi to the Nth degree to calculate the slope of a hill in a physics engine, because they can get something 'good enough' for the screen using a rougher calculation... but hasn't it always been like that out of necessity?&lt;/span&gt;&lt;br /&gt;Heuristics (the way I'm using them) are basically algorithms that are not guaranteed to get the right answer all the time. Sometimes you can have a heuristic that gets you something close to the answer, and you (as the programmer) say, "This is close enough for government work."&lt;br /&gt;This is a very old trick of programming, and it's a very powerful one on its own. Trying to make algorithms that never fail, and proving that they can never fail, is an entire branch of computer science and frankly one that I think is a dead end. Because that's not the way the world works.&lt;br /&gt;When you look at biological systems, they are usually perfect machines; they have all these heuristics to deal with a variety of situations (hey, our core temperature is too hot, let's release sweat, which should cool us off) but none of them are anywhere near provably correct in all circumstances (hey, we're actually submerged in hot water, so sweat isn't effective in cooling us off). But they're good enough, and they fail gracefully.&lt;br /&gt;You don't die immediately if sweating fails to cool you; you just grow uncomfortable and have to make a conscious reponse (hey, I think I'll get out of this hot tub now).&lt;br /&gt;Programs need to be written this way. In the case of reading bar codes, you don't care if you read garbage a thousand times a second. It doesn't hurt you. If you write an algorithm that looks for barcodes everywhere in the image, even in the sky or in a face or a cup of coffee, it's not going to hurt anything. Eventually the user will hold up a valid barcode, it'll read it, the checksum will verify, and you're in business.&lt;br /&gt;And the barcode recognizer doesn't have to understand every conceivable way a barcode can be screwed up. If the lighting is totally wrong, or the barcode is moving, the user has to take conscious action and, like, tilt the book differently or hold it still. But this kind of feedback is immediately evident, and it's totally natural.&lt;br /&gt;Because I can try 1,000 times a second, I can give immediate feedback on whether I have a good enough image or not, so the user doesn't, like, take a picture, hold her breath for four seconds, have the software go "WRONG," try adjusting the book, take another picture, hold her breath...&lt;br /&gt;Humans are incredibly good at trying new and random things when they get instant feedback. It's the basis of all learning for us, and it's an absolutely fundamental rule of UI design. (This is also the basis of the movement away from having modal dialogs that pop up and say, "Hey, you pressed a bad key!" If you have to pause and read and dismiss the dialog, the lesson you get is, "Stop trying to learn this program," not, "Try a different key."&lt;br /&gt;The Mac and NeXTstep were pioneers in getting this right -- just beep if the user hits a wrong key, so if she wants she can lean on the whole keyboard and see if ANY keys are valid, and there's no punishment phase for it.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Failing gracefully... That's key. It's in our blood ;)&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115449342060378234?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115449342060378234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115449342060378234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115449342060378234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115449342060378234'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/failing-gracefully-is-essence-of-life.html' title='Failing Gracefully is the essence of life'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115444740862178725</id><published>2006-08-01T07:31:00.000-07:00</published><updated>2006-08-01T08:50:08.720-07:00</updated><title type='text'>Flexibility and accomdating clients</title><content type='html'>Last entry I covered the differences between flexible and static methods of deployment and the conclusion at the end was a mix of the two.  It has been my experience that the best way to mix the two is ensure all variable information is gathered from the start.  This does two things:&lt;br /&gt;&lt;br /&gt;1) Eliminates technician wait time in that you shouldn't have to wait for a task to "catch up" till you can respond to it&lt;br /&gt;2) Removes pauses that can extend the length of time an unsupervised process&lt;br /&gt;&lt;br /&gt;To accomplish this we need ways of storing data from the client when they order the machine and a system of pulling the data out and configuring the machine.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;STORING DATA:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Data can be stored in various fashions, a text-file is the fashion I use the most as it's simple, quick, and easy to parse.  To generate a text file from a user's response we can use a simple batch script:&lt;br /&gt;---------------------------&lt;br /&gt;@ECHO OFF&lt;br /&gt;set /p NAME=What is your name?&lt;br /&gt;set /p OFFICE=Do you want MS OFFICE [y/n]?&lt;br /&gt;&lt;br /&gt;ECHO %NAME% &gt; "%userprofile%\desktop\responses.txt"&lt;br /&gt;ECHO OFFICE-%OFFICE% &gt;&gt; "%userprofile%\desktop\responses.txt"&lt;br /&gt;----------------------------&lt;br /&gt;&lt;br /&gt;This will generate a text file that we can parse.  The text file should look like this:&lt;br /&gt;&lt;br /&gt;----------------------------&lt;br /&gt;Trentent&lt;br /&gt;OFFICE-y&lt;br /&gt;----------------------------&lt;br /&gt;&lt;br /&gt;We've now recorded some essential information to store for later when the time is required to utilize those responses.&lt;br /&gt;&lt;br /&gt;To parse the file we can use tools such as find.exe the command FOR or IF.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;cd /d "%userprofile%\desktop"&lt;br /&gt;for /f "tokens=*" %A IN (responses.txt) DO ECHO %A&lt;br /&gt;&lt;br /&gt;This will bring two responses:&lt;br /&gt;ECHO Trentent&lt;br /&gt;ECHO OFFICE y&lt;br /&gt;&lt;br /&gt;If we parse the file for known static "headers" (such as OFFICE) we can set variables for the stored responses.&lt;br /&gt;&lt;br /&gt;FOR /F "TOKENS=* DELIMS= EOL=" %A IN ('findstr.exe /I "OFFICE" "%userprofile%\desktop\responses.txt"') DO SET OFFICE=%A&lt;br /&gt;&lt;br /&gt;Now we can compare that value to determine if Office should be installed:&lt;br /&gt;if /i '%OFFICE%' == 'OFFICE-y' (&lt;br /&gt;ECHO Found Office&lt;br /&gt;) ELSE (&lt;br /&gt;ECHO Office NOT found&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;So if Office is found we can install it via a silent install command line.&lt;br /&gt;&lt;br /&gt;So this lesson taught us to store reponses to be retrieved later.  Stored responses can happen at any time -- when a user configures a system off a website, off a spreadsheet.   These responses need to be stored in a known location such as a file share, in a database or downloaded off a webpage (wget.exe).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115444740862178725?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115444740862178725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115444740862178725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115444740862178725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115444740862178725'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/08/flexibility-and-accomdating-clients.html' title='Flexibility and accomdating clients'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-115441149758149470</id><published>2006-07-31T22:08:00.000-07:00</published><updated>2006-07-31T23:01:16.266-07:00</updated><title type='text'>Working oneself out of a job</title><content type='html'>While working at Voodoo I've befriended an extremely bright individual, Trevor K. I dont' believe he has a blog but he is an extermely interesting person with the way he is able to describe situations. He puts into words a very simple explanation of a complex idea. One of his ideas that he has told me I've put into a personal mission of mine:&lt;br /&gt;&lt;br /&gt;To work myself out of my current job.&lt;br /&gt;&lt;br /&gt;Now, it may sound crazy but if I can do that, I'll must have done something amazing. Staples takes this concept and runs with it a little bit with their easy button concept. If you could develop your job into something so easy to do that all you had to do was push a button, wouldn't that be incredible. Now, offer that up to companies and see what they'll say. I'm sure they'd jump at the chance to take on someone with such a vision. Truly, I'm blessed to have such a visionary friend :)&lt;br /&gt;&lt;br /&gt;Anyways, this takes me to my current post and my current topic of discussion. At Voodoo I developed a software and testing system that would completely software a machine based on the SKU's you ordered and then run a whole suite of applications and games to test the machines. It did this all based on your order number. All the technician had to do was type the number in and he was done. As a customer you could change your order and software mix right up to the day of testing and the technician didn't have to worry about double or triple checking each and every order to ensure it was correct, the system did it for you. Even better was ensuring each machine was softwared the same way excluding the variations between orders. After softwaring all scores and hardware were recorded with future plans to give the sales people that information to better make a sale.&lt;br /&gt;&lt;br /&gt;Anyways, I've now moved on from Voodoo but am bringing my skills with me to help push for a flexible automated system of deployment in a corporate environment. My ideal system of deployment would be as such:&lt;br /&gt;&lt;br /&gt;1. Client orders a system&lt;br /&gt;2. System is ordered&lt;br /&gt;3. System arrives, plug system into network&lt;br /&gt;4. System is softwared automatically with the clients choices&lt;br /&gt;&lt;br /&gt;At Voodoo I got very close to accomplishing this before I left. At Haworth it is an interesting challenge to get Haworth up to and hopefully surpass this.&lt;br /&gt;&lt;br /&gt;So, lets look at some methods of &lt;em&gt;softwaring&lt;/em&gt; (which, BTW is NOT a word as I learned very rudely one day) systems.&lt;br /&gt;&lt;br /&gt;Starting from the very beginning is the plain jane off a CD. It's very slow and time consuming having to manually enter and install each piece of software, but it's &lt;strong&gt;EXTERMELY&lt;/strong&gt; flexible.&lt;br /&gt;&lt;br /&gt;There are ways of speeding it up, though that usually takes away flexibility. Going along with it for now, some low-hanging fruit is to automate the entry of common data. In Windows this is most easily done by using unattend.txt files or sysprep.inf files which contain answers to those annoying dialog boxes. So that's low-hanging fruit number one. The other is to automate duplicated procedures. This is having to install the same application over and over and over again. In Windows you can automate this process with &lt;a href="http://unattended.sourceforge.net/installers.php"&gt;silent installs&lt;/a&gt;. Differing installers have different ways of automating (or silencing) installs. Some have no way of being silent at all! Those that don't have a way of being automated require tools such as &lt;a href="http://www.autoitscript.com/autoit3/"&gt;AutoIt&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So what do we have thus far? A very static way of doing installations. Flexibilty is a premium (if &lt;a href="http://www.findarticles.com/p/articles/mi_m3165/is_n4_v30/ai_15423375/pg_4"&gt;lean &lt;/a&gt;has taught me anything) and should be strived for as much as possible. There will always be information that will be the same across systems, but at the same time there will almost always be one thing that is different. So the best method is a mix of the two.&lt;br /&gt;&lt;br /&gt;How can we mix the two? Well, we should start with some scenarios to help illustrate some pretty basic but creative ways of resolving this issue.&lt;br /&gt;&lt;br /&gt;Corporation Fubar has two lines of desktop and a line of laptops they use in their organization. The desktops are completely different, ones an AMD with NVidia chipset and graphics while the other is an Intel with an Intel chipset and ATI graphics. The laptop is a basic intel system that requires special software.&lt;br /&gt;&lt;br /&gt;Some corporations will use 3 base images for each of the three systems (very static) and update them as different hardware and software come in. Eventually, problems arise because one version gets of sync, a alot of effort is required to maintain them or different hardware requires even more images (say, the Intel desktop now comes with an Nvidia chipset and graphics).&lt;br /&gt;&lt;br /&gt;What can you do? You could restrict employees to only use certain computers and start taking away their choices (&lt;a href="http://www.ingentaconnect.com/content/routledg/cjgr/2002/00000004/00000004/art00005;jsessionid=298i5uesm2cnr.alice"&gt;but flexibility is a good thing right&lt;/a&gt;?) or we can come up with an IT solution that will give them their choice and make life equally easy (or dare I say easier) for us.&lt;br /&gt;&lt;br /&gt;More for tomorrow, it's bed time right now ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-115441149758149470?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/115441149758149470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=115441149758149470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115441149758149470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/115441149758149470'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2006/07/working-oneself-out-of-job.html' title='Working oneself out of a job'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-110265552825683675</id><published>2004-12-09T21:11:00.000-08:00</published><updated>2004-12-09T21:12:08.256-08:00</updated><title type='text'>A8NSLI HAS ARRIVED!</title><content type='html'>A lot of people are going to be happy this Christmas... :D&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-110265552825683675?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/110265552825683675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=110265552825683675' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/110265552825683675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/110265552825683675'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2004/12/a8nsli-has-arrived.html' title='A8NSLI HAS ARRIVED!'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-110037768466845363</id><published>2004-11-13T13:27:00.000-08:00</published><updated>2004-11-13T12:28:04.666-08:00</updated><title type='text'>This is just me showing my dad how to add content.</title><content type='html'>Adding content to my blogger site... la la la&lt;br /&gt;&lt;br /&gt;different text style&lt;br /&gt;&lt;strong&gt;bold&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;italic&lt;/em&gt;&lt;br /&gt;&lt;span style="color:#ffcccc;"&gt;colored&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-110037768466845363?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/110037768466845363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=110037768466845363' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/110037768466845363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/110037768466845363'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2004/11/this-is-just-me-showing-my-dad-how-to.html' title='This is just me showing my dad how to add content.'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-109407916021924168</id><published>2004-09-01T15:34:00.000-07:00</published><updated>2004-09-01T15:52:40.220-07:00</updated><title type='text'>Right, Errors that rarely happen...</title><content type='html'>Such as &lt;a href="http://www.google.com/search?sourceid=navclient&amp;ie=UTF-8&amp;amp;q=framebuf+0x000000EA"&gt;this one&lt;/a&gt;.  These errors piss you off the most.&lt;br /&gt;&lt;br /&gt;STOP: 0x000000EA&lt;br /&gt;framebuf&lt;br /&gt;Why?  I don't know.  It seems to be happening on the new ASUS P5AD2 Premium motherbords that I have with the new PCI-E 6800 Ultra's, with BIOS version 5.40.02.25.03, drivers 61.76's.  I'm installing the 61.76's because the 61.77's kick out to a black screen after a WinPE install (I'm guessing because they are not signed... Though, I'm waiting on official word from Walt first...).  It's a odd error, to be sure, and fortunately for me, it only happens every so often, like 1 out of 4 installs.  But, to me that is frequent enough to be wary. &lt;br /&gt;&lt;br /&gt;The error happens at the 34Min mark, and/or the 33Min mark.  During which time, a correct install will have the screen "flicker" black about 3 or 4 times for about a half second and then continue on.  I take it the Nvidia drivers are being installed/loaded or unloaded during this time and the install bluescreens because it reloads/unloads/reinstalls the framebuf.dll driver file.  An incorrect install has the screen flicker than "BSOD!".&lt;br /&gt;&lt;br /&gt;Since this problem happens sporadically, and ONLY when the Nvidia drivers are being loaded as well, I suspect that it is the loading/unloading of the drivers (if it does such a thing) or it is the Nvidia hardware.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-109407916021924168?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/109407916021924168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=109407916021924168' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/109407916021924168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/109407916021924168'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2004/09/right-errors-that-rarely-happen.html' title='Right, Errors that rarely happen...'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7977773.post-109271331170119324</id><published>2004-08-16T20:23:00.000-07:00</published><updated>2004-08-16T20:28:31.700-07:00</updated><title type='text'>Hello.</title><content type='html'>Hi, my name is Trentent Tye and I'm starting this blog here on blogger to give it a try.  I've used MoveableType before which I found to be very nice and installed it on both my iMac DVSE 400 running OS X (10.1-10.3)  and my P4 2.66GHz machine running Windows 2000 and XP.&lt;br /&gt;&lt;br /&gt;A little about me:&lt;br /&gt;I'm a fairly technical person, but I feel I'm currently in the inbetween state of technical person who can relate to layman terms for someone not a techy, and yet technical enough to understand most of the advanced things out there.&lt;br /&gt;&lt;br /&gt;I work for &lt;a href="http://www.voodoopc.com"&gt;Voodoo computers&lt;/a&gt; (currently) and go by the moniker Metzen.  I've stayed off the Voodoo forums for a bit for personal reasons lately though.&lt;br /&gt;&lt;br /&gt;I currently live with my girlfriend in Calgary, Alberta, Canada.  I came from Edmonton and just find the City of Calgary to be awesome.  Edmonton should REALLY learn a thing or two about design from Calgary.&lt;br /&gt;&lt;br /&gt;Well... Let's see how this looks.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7977773-109271331170119324?l=trentent.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://trentent.blogspot.com/feeds/109271331170119324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7977773&amp;postID=109271331170119324' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/109271331170119324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7977773/posts/default/109271331170119324'/><link rel='alternate' type='text/html' href='http://trentent.blogspot.com/2004/08/hello.html' title='Hello.'/><author><name>Trentent</name><uri>http://www.blogger.com/profile/15791628156004881187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
