Move IIS InetPub Folder To Another Drive

I recently had the opportunity to help a customer move their InetPub folder from their almost full OS drive to their not-very-full data drive.

Read on for my notes.

I located a script that would do the heavy lifting, but we actually had to tweak the heck out of it to make it work. Here's the URL:
http://msmvps.com/blogs/msakr/archive/2006/02/10/83085.aspx

Note that you have to change several things to make the script work well. There are two sets of parameters. You have to make allowances for the ftp service, if it's running, as well.

The thing that threw me for a loop was the following line:

Params(0) = "w3svc/1/root/path d:\inetpub\wwwroot"

Note that it says "w3svc/1/root". The "1" in this case is the actual "ID" of the IIS instance that you want to move. In our case, the instance number was like 15293745 or something. The script kept failing when trying to set the Params, because it was trying to access IIS instance "1" … which we did not have.

Also, we had an InetPub_Dev folder, with yet another instance, so I had to create another Params line for that.

All in all, though, it worked well, once we were done tweaking it.

Also, on the XCOPY line:

ret = WSHShell.Run ("xcopy c:\inetpub D:\Inetpub\ /s /e /q /i /h /r /k /o /x" , 1, TRUE)

You might want to remove the "/q" as this copies in Quiet mode, not listing the files as they copy. It would just be nice to see the list of files (the progress) as they were being copied.

Note that there is an entire section that you'll want to un-comment if you want the script to adjust the cisvcor Index Service on the machine.

I think, even though I've given the URL above, that I'll copy and paste the script below…

— CUT HERE —

' —————————————————————————–
' RENAME THIS FILE TO MOVEIIS.VBS BEFORE USING!!!
' —————————————————————————–
' Modify IIS Metabase Properties for new data location
' Change the params and params2 value depending on which components are
' installed
' set params to 10 if NNTP and FTP are installed and running otherwise
' set params to 9 and comment out msftpsvc line if FTP is not installed
' set params2 to 4 if FTP and NNTP are installed and runnning otherwise
' set params2 to 1 and comment out cisvc, msftpsvc and nntpsvc line if the
' Indexing service, FTP service, and Network News Transport Service are
' not installed
' References to the Indexing service have been commented out, check comments
' on line 75 to change Indexing Service settings

'Stop IIS services before continuing
 
Set WSHShell = Wscript.CreateObject("Wscript.Shell")
WSHShell.PopUp "Stopping all Internet Services…"
 
ret = WshShell.Run ("net stop iisadmin /y", 1, TRUE)
 
If ret = 0 then
 WSHShell.PopUp "IISADMIN service was stopped successfully, continuing"
 'restart()
else
 WSHShell.PopUp "IISADMIN failed to stop successfully. The error code is " & ret
 Wscript.Quit 1
end if
 
Dim params(6)
Dim x, ret
Dim params2(2)
 
Params(0) = "w3svc/1/root/path d:\inetpub\wwwroot"
Params(1) = "w3svc/1/root/scripts/path d:\inetpub\scripts "
Params(2) = "w3svc/1/root/iissamples/path d:\inetpub\iissamples"
Params(3) = "smtpsvc/1/BadMailDirectory d:\inetpub\mailroot\BadMail"
Params(4) = "smtpsvc/1/PickupDirectory d:\inetpub\mailroot\Pickup"
Params(5) = "smtpsvc/1/QueueDirectory d:\inetpub\mailroot\Queue"
Params(6) = "smtpsvc/1/DropDirectory d:\inetpub\mailroot\Drop"
'Params(7) = "nntpsvc/1/NewsPickupDirectory d:\inetpub\nntpfile\pickup"
'Params(8) = "nntpsvc/1/NewsFailedPickupDirectory d:\inetpub\nntpfile\failedpickup"
'Params(9) = "nntpsvc/1/NewsDropDirectory d:\inetpub\nntpfile\drop"
'Params(10) = "msftpsvc/1/root/path d:\inetpub\ftproot"

Set WshSysEnv = WshShell.Environment("PROCESS")
 
For Each x In Params
ret = WSHShell.Run ("cscript.exe " & "c:\inetpub\adminscripts\adsutil.vbs SET " & x, 1, TRUE)
Next
 
' Verify Settings were successfully applied
If ret = 0 then
 
 WSHShell.PopUp "The new metabase settings have been successfully updated. The new Web Data path is d:\inetpub"
else
 WSHShell.PopUp "The Configuration changes failed. The error code is " & ret
 Wscript.Quit 1
end if
wscript.Sleep 5000
 
' Move Data to new location (D:\Inetpub) using xcopy.exe (this can be changed
' from xcopy to move so the data is actually moved from current locale)
 
ret = WSHShell.Run ("xcopy c:\inetpub D:\Inetpub\ /s /e /q /i /h /r /k /o /x" , 1, TRUE)
If ret = 0 then
 WSHShell.PopUp "The data has been successfully moved to D:\Inetpub"
else
 WSHShell.PopUp "The data move failed. The error code is " & ret
 Wscript.Quit 1
end if
 
' INDEX SERVICE CONFIGURATION
' Remove comments from the next 29 lines to configure cisvc through this script
'
'' Update Web Catalog to be for D:\Inetpub
'
''Stop Content Index Service
'
'Set WSHShell = Wscript.CreateObject("Wscript.Shell")
' WSHShell.PopUp "Stopping Index Service…"
'
'ret = WshShell.Run ("net stop cisvc", 1, TRUE)
 
'If ret = 0 then
' chgeCat()
'else
' WSHShell.PopUp "Content Index service failed to stop successfully. The error code is " & ret
' Wscript.Quit 1
'end if
'
'Function chgeCat()
'Set WshShell = WScript.CreateObject("WScript.Shell")
'
''Delete Catalogs
'WshShell.RegDelete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\" 

' Delete Web Catalog.
'WshShell.RegDelete "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\System\" 

' Delete System Catalog.
'
''Modify existing Web catalog entry
'WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\Location", "D:\Inetpub"
'WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\IsIndexingW3Svc", 1, "REG_DWORD"
'
'end function
 
'Start Services (WWW, SMTP, CISVC, NNTP, MSFTPSVC)
 
Set WSHShell = Wscript.CreateObject("Wscript.Shell")
 WSHShell.PopUp "Attempting to restart stopped Services…"
 
Params2(0) = "w3svc"
Params2(1) = "smtpsvc"
'Params2(2) = "cisvc"
'Params2(3) = "nntpsvc"
'Params2(4) = "msftpsvc"

For Each x In Params2
 ret = WshShell.Run ("net start " & x, 1, TRUE)
 wscript.Sleep 5000
Next
 
If ret = 0 then
 WSHShell.PopUp "Services were started successfully, modifications complete"
else
 WSHShell.PopUp "One or more services fail to start successfully. The error code is " & ret
 Wscript.Quit 1
end if

— EOF —

Originally Published Friday, February 10, 2006 10:04 AM by Michel SAKR

 

What say you?

SofTouch Systems Newsletter.

Stay on top of modern IT business trends, tips, news, along with STS product reviews, updates, and more.